File tree 5 files changed +45
-62
lines changed
g0601_0700/s0620_not_boring_movies
s1309_decrypt_string_from_alphabet_to_integer_mapping
s1392_longest_happy_prefix
test/kotlin/g1301_1400/s1392_longest_happy_prefix
5 files changed +45
-62
lines changed Original file line number Diff line number Diff line change @@ -498,7 +498,7 @@ implementation 'com.github.javadev:leetcode-in-kotlin:1.36'
498
498
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
499
499
|-|-|-|-|-|-
500
500
| 0709 |[ To Lower Case] ( src/main/kotlin/g0701_0800/s0709_to_lower_case/Solution.kt ) | Easy | String | 142 | 98.68
501
- | 1309 |[ Decrypt String from Alphabet to Integer Mapping] ( src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping/Solution.kt ) | Easy | String | 129 | 95.45
501
+ | 1309 |[ Decrypt String from Alphabet to Integer Mapping] ( src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping/Solution.kt ) | Easy | String | 0 | 100.00
502
502
| 0953 |[ Verifying an Alien Dictionary] ( src/main/kotlin/g0901_1000/s0953_verifying_an_alien_dictionary/Solution.kt ) | Easy | Array, String, Hash_Table | 137 | 100.00
503
503
504
504
#### Day 10 Linked List and Tree
Original file line number Diff line number Diff line change 1
1
# Write your MySQL query statement below
2
- # #Easy #Database #2023_02_06_Time_305_ms_(59.80%)_Space_0B_(100.00%)
3
- select id, movie, description, rating from Cinema
4
- WHERE mod(id,2 ) = 1
5
- and
6
- description not LIKE ' %boring%'
7
- order by rating DESC ;
2
+ # #Easy #Database #2025_04_23_Time_259_ms_(64.69%)_Space_0.0_MB_(100.00%)
3
+ SELECT id, movie, description, rating
4
+ FROM Cinema
5
+ WHERE description != ' boring' AND id % 2 != 0
6
+ ORDER BY rating DESC ;
Original file line number Diff line number Diff line change 1
1
package g1301_1400.s1309_decrypt_string_from_alphabet_to_integer_mapping
2
2
3
3
// #Easy #String #Programming_Skills_I_Day_9_String
4
- // #2023_06_05_Time_129_ms_(95.45%)_Space_34.8_MB_(63.64 %)
4
+ // #2025_04_24_Time_0_ms_(100.00%)_Space_40.80_MB_(77.78 %)
5
5
6
6
class Solution {
7
7
fun freqAlphabets (s : String ): String {
8
- val map: MutableMap <String , String > = HashMap ()
9
- map[" 1" ] = " a"
10
- map[" 2" ] = " b"
11
- map[" 3" ] = " c"
12
- map[" 4" ] = " d"
13
- map[" 5" ] = " e"
14
- map[" 6" ] = " f"
15
- map[" 7" ] = " g"
16
- map[" 8" ] = " h"
17
- map[" 9" ] = " i"
18
- map[" 10#" ] = " j"
19
- map[" 11#" ] = " k"
20
- map[" 12#" ] = " l"
21
- map[" 13#" ] = " m"
22
- map[" 14#" ] = " n"
23
- map[" 15#" ] = " o"
24
- map[" 16#" ] = " p"
25
- map[" 17#" ] = " q"
26
- map[" 18#" ] = " r"
27
- map[" 19#" ] = " s"
28
- map[" 20#" ] = " t"
29
- map[" 21#" ] = " u"
30
- map[" 22#" ] = " v"
31
- map[" 23#" ] = " w"
32
- map[" 24#" ] = " x"
33
- map[" 25#" ] = " y"
34
- map[" 26#" ] = " z"
35
- val sb = StringBuilder ()
36
- var i = 0
37
- while (i < s.length) {
38
- if (((" " + s[i]).toInt() == 1 || (" " + s[i]).toInt() == 2 ) &&
39
- i + 1 < s.length && i + 2 < s.length &&
40
- s[i + 2 ] == ' #'
41
- ) {
42
- sb.append(map[s.substring(i, i + 3 )])
43
- i + = 3
8
+ val builder = StringBuilder ()
9
+ var i = s.length - 1
10
+ while (i >= 0 ) {
11
+ if (s[i] == ' #' ) {
12
+ decryptor(builder, i - 1 , i - 2 , s)
13
+ i - = 3
44
14
} else {
45
- sb.append(map[" " + s[i]])
46
- i++
15
+ val ch = (s[i].code - ' 0' .code + 96 ).toChar()
16
+ builder.append(ch)
17
+ i--
47
18
}
48
19
}
49
- return sb.toString()
20
+ return builder.reverse().toString()
21
+ }
22
+
23
+ private fun decryptor (builder : StringBuilder , a : Int , b : Int , s : String ) {
24
+ builder.append((((s[b].code - ' 0' .code) * 10 + s[a].code - ' 0' .code) + 96 ).toChar())
50
25
}
51
26
}
Original file line number Diff line number Diff line change 1
1
package g1301_1400.s1392_longest_happy_prefix
2
2
3
3
// #Hard #String #Hash_Function #String_Matching #Rolling_Hash
4
- // #2023_06_06_Time_291_ms_(50 .00%)_Space_38.1_MB_(100 .00%)
4
+ // #2025_04_24_Time_7_ms_(100 .00%)_Space_47.37_MB_(25 .00%)
5
5
6
6
class Solution {
7
7
fun longestPrefix (s : String ): String {
8
- val times = 2
9
- var prefixHash: Long = 0
10
- var suffixHash: Long = 0
11
- var multiplier: Long = 1
12
- var len: Long = 0
13
- // use some large prime as a modulo to avoid overflow errors, e.g. 10 ^ 9 + 7.
14
- val mod: Long = 1000000007
15
- for (i in 0 until s.length - 1 ) {
16
- prefixHash = (prefixHash * times + s[i].code.toLong()) % mod
17
- suffixHash = (multiplier * s[s.length - i - 1 ].code.toLong() + suffixHash) % mod
18
- if (prefixHash == suffixHash) {
19
- len = i.toLong() + 1
8
+ val c = s.toCharArray()
9
+ val n = c.size
10
+ val a = IntArray (n)
11
+ var max = 0
12
+ var i = 1
13
+ while (i < n) {
14
+ if (c[max] == c[i]) {
15
+ max++
16
+ a[i] = max
17
+ i++
18
+ } else {
19
+ if (max > 0 ) {
20
+ max = a[max - 1 ]
21
+ } else {
22
+ a[i] = 0
23
+ i++
24
+ }
20
25
}
21
- multiplier = multiplier * times % mod
22
26
}
23
- return s.substring(0 , len.toInt() )
27
+ return s.substring(0 , a[n - 1 ] )
24
28
}
25
29
}
Original file line number Diff line number Diff line change @@ -14,4 +14,9 @@ internal class SolutionTest {
14
14
fun longestPrefix2 () {
15
15
assertThat(Solution ().longestPrefix(" ababab" ), equalTo(" abab" ))
16
16
}
17
+
18
+ @Test
19
+ fun longestPrefix3 () {
20
+ assertThat(Solution ().longestPrefix(" babbb" ), equalTo(" b" ))
21
+ }
17
22
}
You can’t perform that action at this time.
0 commit comments