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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy