Skip to content

Commit 190ed07

Browse files
add 1935 prod variant
1 parent 45b1404 commit 190ed07

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,4 +471,41 @@ private fun isVowel(char: Char) = when {
471471
else -> false
472472
}
473473

474+
/**
475+
* 1935. Maximum Number of Words You Can Type
476+
*/
477+
478+
fun canBeTypedWords(text: String, brokenLetters: String): Int {
479+
val brokenMask = createBitMask(brokenLetters)
480+
var count = 0
481+
var isValidWord = true
482+
483+
for (char in "$text ") {
484+
if (char == ' ') {
485+
if (isValidWord) count++
486+
isValidWord = true
487+
} else {
488+
if (isBroken(char, brokenMask)) isValidWord = false
489+
}
490+
}
491+
492+
return count
493+
}
494+
495+
fun createBitMask(text: String): Int {
496+
var bitMask = 0
497+
498+
for (char in text) {
499+
val charBit = 1 shl char.code
500+
bitMask = bitMask or charBit
501+
}
502+
503+
return bitMask
504+
}
505+
506+
fun isBroken(char: Char, brokenBitMask: Int): Boolean {
507+
val charBitMask = 1 shl char.code
508+
return (brokenBitMask and charBitMask) != 0
509+
}
510+
474511

contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ fun divideStringProdVariant(s: String, k: Int, fill: Char): Array<String> = when
8484
* Prod Variant
8585
*/
8686

87-
fun canBeTypedWords(text: String, brokenLetters: String): Int {
87+
fun canBeTypedWordsProdVariant(text: String, brokenLetters: String): Int {
8888
val words = text.split(" ")
8989
return if (brokenLetters.isEmpty()) words.size else {
9090
val set = brokenLetters.toSet()

0 commit comments

Comments
 (0)