Skip to content

Commit b79d93c

Browse files
authored
Improved task 3136
1 parent 528ced9 commit b79d93c

File tree

2 files changed

+82
-23
lines changed

2 files changed

+82
-23
lines changed
Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,26 @@
11
package g3101_3200.s3136_valid_word
22

3-
// #Easy #String #2024_05_07_Time_160_ms_(92.50%)_Space_35.5_MB_(90.00%)
3+
// #Easy #String #2025_07_15_Time_2_ms_(100.00%)_Space_41.87_MB_(100.00%)
44

55
class Solution {
66
fun isValid(word: String): Boolean {
77
if (word.length < 3) {
88
return false
99
}
10-
if (word.contains("@") || word.contains("#") || word.contains("$")) {
11-
return false
12-
}
13-
val vowels = charArrayOf('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')
14-
val consonants = charArrayOf(
15-
'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v',
16-
'w', 'x', 'y', 'z', 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q',
17-
'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z',
18-
)
19-
var flag1 = false
20-
var flag2 = false
21-
for (c in vowels) {
22-
if (word.indexOf(c) != -1) {
23-
flag1 = true
24-
break
25-
}
26-
}
27-
for (c in consonants) {
28-
if (word.indexOf(c) != -1) {
29-
flag2 = true
30-
break
10+
var hasVowel = false
11+
var hasConsonant = false
12+
for (c in word.toCharArray()) {
13+
if (Character.isLetter(c)) {
14+
val ch = c.lowercaseChar()
15+
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
16+
hasVowel = true
17+
} else {
18+
hasConsonant = true
19+
}
20+
} else if (!Character.isDigit(c)) {
21+
return false
3122
}
3223
}
33-
return flag1 && flag2
24+
return hasVowel && hasConsonant
3425
}
3526
}

src/test/kotlin/g3101_3200/s3136_valid_word/SolutionTest.kt

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,72 @@ internal class SolutionTest {
1919
fun isValid3() {
2020
assertThat(Solution().isValid("a3\$e"), equalTo(false))
2121
}
22+
23+
@Test
24+
fun isValid4() {
25+
assertThat(Solution().isValid("a"), equalTo(false))
26+
assertThat(Solution().isValid("ab"), equalTo(false))
27+
assertThat(Solution().isValid("1"), equalTo(false))
28+
assertThat(Solution().isValid("1a"), equalTo(false))
29+
assertThat(Solution().isValid(""), equalTo(false))
30+
}
31+
32+
@Test
33+
fun isValid5() {
34+
assertThat(Solution().isValid("aei"), equalTo(false))
35+
assertThat(Solution().isValid("AEI"), equalTo(false))
36+
assertThat(Solution().isValid("Aei"), equalTo(false))
37+
assertThat(Solution().isValid("uuu"), equalTo(false))
38+
}
39+
40+
@Test
41+
fun isValid6() {
42+
assertThat(Solution().isValid("bcdfg"), equalTo(false))
43+
assertThat(Solution().isValid("BCD"), equalTo(false))
44+
assertThat(Solution().isValid("xyz"), equalTo(false))
45+
assertThat(Solution().isValid("QWRTY"), equalTo(false))
46+
}
47+
48+
@Test
49+
fun isValid7() {
50+
assertThat(Solution().isValid("abc"), equalTo(true))
51+
assertThat(Solution().isValid("bac"), equalTo(true))
52+
assertThat(Solution().isValid("AeIbcD"), equalTo(true))
53+
assertThat(Solution().isValid("tree"), equalTo(true))
54+
assertThat(Solution().isValid("skyE"), equalTo(true))
55+
}
56+
57+
@Test
58+
fun isValid8() {
59+
assertThat(Solution().isValid("a1b2c"), equalTo(true))
60+
assertThat(Solution().isValid("1a2b"), equalTo(true))
61+
assertThat(Solution().isValid("b2c4e"), equalTo(true))
62+
assertThat(Solution().isValid("123"), equalTo(false))
63+
}
64+
65+
@Test
66+
fun isValid10() {
67+
assertThat(Solution().isValid("a#b"), equalTo(false))
68+
assertThat(Solution().isValid("@ab"), equalTo(false))
69+
assertThat(Solution().isValid("ab!"), equalTo(false))
70+
assertThat(Solution().isValid("c_d"), equalTo(false))
71+
assertThat(Solution().isValid("a.b"), equalTo(false))
72+
assertThat(Solution().isValid("abc "), equalTo(false))
73+
}
74+
75+
@Test
76+
fun isValid11() {
77+
assertThat(Solution().isValid("AbC"), equalTo(true))
78+
assertThat(Solution().isValid("BacE1"), equalTo(true))
79+
assertThat(Solution().isValid("zEi"), equalTo(true))
80+
}
81+
82+
@Test
83+
fun isValid12() {
84+
assertThat(Solution().isValid("a1b"), equalTo(true))
85+
assertThat(Solution().isValid("ab1"), equalTo(true))
86+
assertThat(Solution().isValid("1ab"), equalTo(true))
87+
assertThat(Solution().isValid("1a"), equalTo(false))
88+
assertThat(Solution().isValid("1b"), equalTo(false))
89+
}
2290
}

0 commit comments

Comments
 (0)