Skip to content

Commit 9aac466

Browse files
committed
Improved tasks 620, 1309, 1392
1 parent 5362614 commit 9aac466

File tree

4 files changed

+40
-62
lines changed

4 files changed

+40
-62
lines changed

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@
470470
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
471471
|-|-|-|-|-|-
472472
| 0709 |[To Lower Case](src/main/kotlin/g0701_0800/s0709_to_lower_case)| Easy | String | 142 | 98.68
473-
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String | 129 | 95.45
473+
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String | 0 | 100.00
474474
| 0953 |[Verifying an Alien Dictionary](src/main/kotlin/g0901_1000/s0953_verifying_an_alien_dictionary)| Easy | Array, String, Hash_Table | 137 | 100.00
475475

476476
#### Day 10 Linked List and Tree
@@ -3768,7 +3768,7 @@
37683768
| 1395 |[Count Number of Teams](src/main/kotlin/g1301_1400/s1395_count_number_of_teams)| Medium | Array, Dynamic_Programming, Binary_Indexed_Tree | 192 | 100.00
37693769
| 1394 |[Find Lucky Integer in an Array](src/main/kotlin/g1301_1400/s1394_find_lucky_integer_in_an_array)| Easy | Array, Hash_Table, Counting | 161 | 100.00
37703770
| 1393 |[Capital Gain/Loss](src/main/kotlin/g1301_1400/s1393_capital_gainloss)| Medium | LeetCode_Curated_SQL_70, Database, SQL_I_Day_9_Control_of_Flow | 990 | 47.36
3771-
| 1392 |[Longest Happy Prefix](src/main/kotlin/g1301_1400/s1392_longest_happy_prefix)| Hard | String, Hash_Function, String_Matching, Rolling_Hash | 291 | 50.00
3771+
| 1392 |[Longest Happy Prefix](src/main/kotlin/g1301_1400/s1392_longest_happy_prefix)| Hard | String, Hash_Function, String_Matching, Rolling_Hash | 7 | 100.00
37723772
| 1391 |[Check if There is a Valid Path in a Grid](src/main/kotlin/g1301_1400/s1391_check_if_there_is_a_valid_path_in_a_grid)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 636 | 100.00
37733773
| 1390 |[Four Divisors](src/main/kotlin/g1301_1400/s1390_four_divisors)| Medium | Array, Math | 255 | 100.00
37743774
| 1389 |[Create Target Array in the Given Order](src/main/kotlin/g1301_1400/s1389_create_target_array_in_the_given_order)| Easy | Array, Simulation | 155 | 91.67
@@ -3844,7 +3844,7 @@
38443844
| 1312 |[Minimum Insertion Steps to Make a String Palindrome](src/main/kotlin/g1301_1400/s1312_minimum_insertion_steps_to_make_a_string_palindrome)| Hard | String, Dynamic_Programming | 186 | 67.70
38453845
| 1311 |[Get Watched Videos by Your Friends](src/main/kotlin/g1301_1400/s1311_get_watched_videos_by_your_friends)| Medium | Array, Hash_Table, Sorting, Breadth_First_Search | 372 | 100.00
38463846
| 1310 |[XOR Queries of a Subarray](src/main/kotlin/g1301_1400/s1310_xor_queries_of_a_subarray)| Medium | Array, Bit_Manipulation, Prefix_Sum | 382 | 100.00
3847-
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String, Programming_Skills_I_Day_9_String | 129 | 95.45
3847+
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String, Programming_Skills_I_Day_9_String | 0 | 100.00
38483848
| 1307 |[Verbal Arithmetic Puzzle](src/main/kotlin/g1301_1400/s1307_verbal_arithmetic_puzzle)| Hard | Array, String, Math, Backtracking | 164 | 100.00
38493849
| 1306 |[Jump Game III](src/main/kotlin/g1301_1400/s1306_jump_game_iii)| Medium | Array, Depth_First_Search, Breadth_First_Search, Graph_Theory_I_Day_11_Breadth_First_Search, Udemy_Arrays | 291 | 100.00
38503850
| 1305 |[All Elements in Two Binary Search Trees](src/main/kotlin/g1301_1400/s1305_all_elements_in_two_binary_search_trees)| Medium | Sorting, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 531 | 100.00
@@ -4401,7 +4401,7 @@
44014401
| 0623 |[Add One Row to Tree](src/main/kotlin/g0601_0700/s0623_add_one_row_to_tree)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 202 | 100.00
44024402
| 0622 |[Design Circular Queue](src/main/kotlin/g0601_0700/s0622_design_circular_queue)| Medium | Array, Design, Linked_List, Queue, Programming_Skills_II_Day_20 | 234 | 92.68
44034403
| 0621 |[Task Scheduler](src/main/kotlin/g0601_0700/s0621_task_scheduler)| Medium | Array, Hash_Table, Sorting, Greedy, Heap_Priority_Queue, Counting, Level_2_Day_5_Greedy | 266 | 98.36
4404-
| 0620 |[Not Boring Movies](src/main/kotlin/g0601_0700/s0620_not_boring_movies)| Easy | Database | 305 | 59.80
4404+
| 0620 |[Not Boring Movies](src/main/kotlin/g0601_0700/s0620_not_boring_movies)| Easy | Database | 259 | 64.69
44054405
| 0619 |[Biggest Single Number](src/main/kotlin/g0601_0700/s0619_biggest_single_number)| Easy | Database | 656 | 90.69
44064406
| 0617 |[Merge Two Binary Trees](src/main/kotlin/g0601_0700/s0617_merge_two_binary_trees)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Algorithm_I_Day_8_Breadth_First_Search_Depth_First_Search | 243 | 72.83
44074407
| 0611 |[Valid Triangle Number](src/main/kotlin/g0601_0700/s0611_valid_triangle_number)| Medium | Array, Sorting, Greedy, Binary_Search, Two_Pointers, Binary_Search_II_Day_1 | 203 | 100.00

src/main/kotlin/g0601_0700/s0620_not_boring_movies/readme.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,8 @@ Cinema table:
5959

6060
```sql
6161
# Write your MySQL query statement below
62-
select id, movie, description, rating from Cinema
63-
WHERE mod(id,2) = 1
64-
and
65-
description not LIKE '%boring%'
66-
order by rating DESC;
62+
SELECT id, movie, description, rating
63+
FROM Cinema
64+
WHERE description != 'boring' AND id % 2 != 0
65+
ORDER BY rating DESC;
6766
```

src/main/kotlin/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping/readme.md

+14-39
Original file line numberDiff line numberDiff line change
@@ -39,48 +39,23 @@ The test cases are generated so that a unique mapping will always exist.
3939
```kotlin
4040
class Solution {
4141
fun freqAlphabets(s: String): String {
42-
val map: MutableMap<String, String> = HashMap()
43-
map["1"] = "a"
44-
map["2"] = "b"
45-
map["3"] = "c"
46-
map["4"] = "d"
47-
map["5"] = "e"
48-
map["6"] = "f"
49-
map["7"] = "g"
50-
map["8"] = "h"
51-
map["9"] = "i"
52-
map["10#"] = "j"
53-
map["11#"] = "k"
54-
map["12#"] = "l"
55-
map["13#"] = "m"
56-
map["14#"] = "n"
57-
map["15#"] = "o"
58-
map["16#"] = "p"
59-
map["17#"] = "q"
60-
map["18#"] = "r"
61-
map["19#"] = "s"
62-
map["20#"] = "t"
63-
map["21#"] = "u"
64-
map["22#"] = "v"
65-
map["23#"] = "w"
66-
map["24#"] = "x"
67-
map["25#"] = "y"
68-
map["26#"] = "z"
69-
val sb = StringBuilder()
70-
var i = 0
71-
while (i < s.length) {
72-
if ((("" + s[i]).toInt() == 1 || ("" + s[i]).toInt() == 2) &&
73-
i + 1 < s.length && i + 2 < s.length &&
74-
s[i + 2] == '#'
75-
) {
76-
sb.append(map[s.substring(i, i + 3)])
77-
i += 3
42+
val builder = StringBuilder()
43+
var i = s.length - 1
44+
while (i >= 0) {
45+
if (s[i] == '#') {
46+
decryptor(builder, i - 1, i - 2, s)
47+
i -= 3
7848
} else {
79-
sb.append(map["" + s[i]])
80-
i++
49+
val ch = (s[i].code - '0'.code + 96).toChar()
50+
builder.append(ch)
51+
i--
8152
}
8253
}
83-
return sb.toString()
54+
return builder.reverse().toString()
55+
}
56+
57+
private fun decryptor(builder: StringBuilder, a: Int, b: Int, s: String) {
58+
builder.append((((s[b].code - '0'.code) * 10 + s[a].code - '0'.code) + 96).toChar())
8459
}
8560
}
8661
```

src/main/kotlin/g1301_1400/s1392_longest_happy_prefix/readme.md

+18-14
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,26 @@ Given a string `s`, return _the **longest happy prefix** of_ `s`. Return an empt
3535
```kotlin
3636
class Solution {
3737
fun longestPrefix(s: String): String {
38-
val times = 2
39-
var prefixHash: Long = 0
40-
var suffixHash: Long = 0
41-
var multiplier: Long = 1
42-
var len: Long = 0
43-
// use some large prime as a modulo to avoid overflow errors, e.g. 10 ^ 9 + 7.
44-
val mod: Long = 1000000007
45-
for (i in 0 until s.length - 1) {
46-
prefixHash = (prefixHash * times + s[i].code.toLong()) % mod
47-
suffixHash = (multiplier * s[s.length - i - 1].code.toLong() + suffixHash) % mod
48-
if (prefixHash == suffixHash) {
49-
len = i.toLong() + 1
38+
val c = s.toCharArray()
39+
val n = c.size
40+
val a = IntArray(n)
41+
var max = 0
42+
var i = 1
43+
while (i < n) {
44+
if (c[max] == c[i]) {
45+
max++
46+
a[i] = max
47+
i++
48+
} else {
49+
if (max > 0) {
50+
max = a[max - 1]
51+
} else {
52+
a[i] = 0
53+
i++
54+
}
5055
}
51-
multiplier = multiplier * times % mod
5256
}
53-
return s.substring(0, len.toInt())
57+
return s.substring(0, a[n - 1])
5458
}
5559
}
5660
```

0 commit comments

Comments
 (0)