From 831485ff50d906f1ab40770fac4f146fe2ebcb30 Mon Sep 17 00:00:00 2001 From: Valentyn Kolesnikov Date: Tue, 15 Jul 2025 09:06:07 +0300 Subject: [PATCH] Improved task 3136 --- .../g3101_3200/s3136_valid_word/Solution.kt | 37 ++++------ .../s3136_valid_word/SolutionTest.kt | 68 +++++++++++++++++++ 2 files changed, 82 insertions(+), 23 deletions(-) diff --git a/src/main/kotlin/g3101_3200/s3136_valid_word/Solution.kt b/src/main/kotlin/g3101_3200/s3136_valid_word/Solution.kt index b496fd674..414c8b178 100644 --- a/src/main/kotlin/g3101_3200/s3136_valid_word/Solution.kt +++ b/src/main/kotlin/g3101_3200/s3136_valid_word/Solution.kt @@ -1,35 +1,26 @@ package g3101_3200.s3136_valid_word -// #Easy #String #2024_05_07_Time_160_ms_(92.50%)_Space_35.5_MB_(90.00%) +// #Easy #String #2025_07_15_Time_2_ms_(100.00%)_Space_41.87_MB_(100.00%) class Solution { fun isValid(word: String): Boolean { if (word.length < 3) { return false } - if (word.contains("@") || word.contains("#") || word.contains("$")) { - return false - } - val vowels = charArrayOf('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U') - val consonants = charArrayOf( - 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', - 'w', 'x', 'y', 'z', 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', - 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z', - ) - var flag1 = false - var flag2 = false - for (c in vowels) { - if (word.indexOf(c) != -1) { - flag1 = true - break - } - } - for (c in consonants) { - if (word.indexOf(c) != -1) { - flag2 = true - break + var hasVowel = false + var hasConsonant = false + for (c in word.toCharArray()) { + if (Character.isLetter(c)) { + val ch = c.lowercaseChar() + if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { + hasVowel = true + } else { + hasConsonant = true + } + } else if (!Character.isDigit(c)) { + return false } } - return flag1 && flag2 + return hasVowel && hasConsonant } } diff --git a/src/test/kotlin/g3101_3200/s3136_valid_word/SolutionTest.kt b/src/test/kotlin/g3101_3200/s3136_valid_word/SolutionTest.kt index e044e3437..8ff426caa 100644 --- a/src/test/kotlin/g3101_3200/s3136_valid_word/SolutionTest.kt +++ b/src/test/kotlin/g3101_3200/s3136_valid_word/SolutionTest.kt @@ -19,4 +19,72 @@ internal class SolutionTest { fun isValid3() { assertThat(Solution().isValid("a3\$e"), equalTo(false)) } + + @Test + fun isValid4() { + assertThat(Solution().isValid("a"), equalTo(false)) + assertThat(Solution().isValid("ab"), equalTo(false)) + assertThat(Solution().isValid("1"), equalTo(false)) + assertThat(Solution().isValid("1a"), equalTo(false)) + assertThat(Solution().isValid(""), equalTo(false)) + } + + @Test + fun isValid5() { + assertThat(Solution().isValid("aei"), equalTo(false)) + assertThat(Solution().isValid("AEI"), equalTo(false)) + assertThat(Solution().isValid("Aei"), equalTo(false)) + assertThat(Solution().isValid("uuu"), equalTo(false)) + } + + @Test + fun isValid6() { + assertThat(Solution().isValid("bcdfg"), equalTo(false)) + assertThat(Solution().isValid("BCD"), equalTo(false)) + assertThat(Solution().isValid("xyz"), equalTo(false)) + assertThat(Solution().isValid("QWRTY"), equalTo(false)) + } + + @Test + fun isValid7() { + assertThat(Solution().isValid("abc"), equalTo(true)) + assertThat(Solution().isValid("bac"), equalTo(true)) + assertThat(Solution().isValid("AeIbcD"), equalTo(true)) + assertThat(Solution().isValid("tree"), equalTo(true)) + assertThat(Solution().isValid("skyE"), equalTo(true)) + } + + @Test + fun isValid8() { + assertThat(Solution().isValid("a1b2c"), equalTo(true)) + assertThat(Solution().isValid("1a2b"), equalTo(true)) + assertThat(Solution().isValid("b2c4e"), equalTo(true)) + assertThat(Solution().isValid("123"), equalTo(false)) + } + + @Test + fun isValid10() { + assertThat(Solution().isValid("a#b"), equalTo(false)) + assertThat(Solution().isValid("@ab"), equalTo(false)) + assertThat(Solution().isValid("ab!"), equalTo(false)) + assertThat(Solution().isValid("c_d"), equalTo(false)) + assertThat(Solution().isValid("a.b"), equalTo(false)) + assertThat(Solution().isValid("abc "), equalTo(false)) + } + + @Test + fun isValid11() { + assertThat(Solution().isValid("AbC"), equalTo(true)) + assertThat(Solution().isValid("BacE1"), equalTo(true)) + assertThat(Solution().isValid("zEi"), equalTo(true)) + } + + @Test + fun isValid12() { + assertThat(Solution().isValid("a1b"), equalTo(true)) + assertThat(Solution().isValid("ab1"), equalTo(true)) + assertThat(Solution().isValid("1ab"), equalTo(true)) + assertThat(Solution().isValid("1a"), equalTo(false)) + assertThat(Solution().isValid("1b"), equalTo(false)) + } }