Skip to content

Commit 9f2a7af

Browse files
authored
Added tasks 892-923
1 parent ec7a9be commit 9f2a7af

File tree

40 files changed

+2585
-27
lines changed

40 files changed

+2585
-27
lines changed

README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@
415415

416416
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
417417
|-|-|-|-|-|-
418+
| 0912 |[Sort an Array](src/main/kotlin/g0901_1000/s0912_sort_an_array)| Medium | Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Merge_Sort, Bucket_Sort, Counting_Sort, Radix_Sort | 606 | 98.48
418419

419420
#### Udemy 2D Arrays/Matrix
420421

@@ -1241,6 +1242,7 @@
12411242

12421243
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
12431244
|-|-|-|-|-|-
1245+
| 0911 |[Online Election](src/main/kotlin/g0901_1000/s0911_online_election)| Medium | Array, Hash_Table, Binary_Search, Design | 766 | 83.33
12441246

12451247
### Dynamic Programming I
12461248

@@ -1277,6 +1279,7 @@
12771279
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
12781280
|-|-|-|-|-|-
12791281
| 0053 |[Maximum Subarray](src/main/kotlin/g0001_0100/s0053_maximum_subarray)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Divide_and_Conquer | 662 | 82.48
1282+
| 0918 |[Maximum Sum Circular Subarray](src/main/kotlin/g0901_1000/s0918_maximum_sum_circular_subarray)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue | 339 | 86.96
12801283

12811284
#### Day 6
12821285

@@ -1472,6 +1475,7 @@
14721475

14731476
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
14741477
|-|-|-|-|-|-
1478+
| 0896 |[Monotonic Array](src/main/kotlin/g0801_0900/s0896_monotonic_array)| Easy | Array | 576 | 90.91
14751479
| 0028 |[Find the Index of the First Occurrence in a String](src/main/kotlin/g0001_0100/s0028_implement_strstr)| Easy | Top_Interview_Questions, String, Two_Pointers, String_Matching | 257 | 32.35
14761480

14771481
#### Day 2
@@ -1550,6 +1554,7 @@
15501554
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
15511555
|-|-|-|-|-|-
15521556
| 0304 |[Range Sum Query 2D - Immutable](src/main/kotlin/g0301_0400/s0304_range_sum_query_2d_immutable)| Medium | Array, Matrix, Design, Prefix_Sum | 1373 | 85.71
1557+
| 0910 |[Smallest Range II](src/main/kotlin/g0901_1000/s0910_smallest_range_ii)| Medium | Array, Math, Sorting, Greedy | 234 | 100.00
15531558

15541559
#### Day 14
15551560

@@ -1693,6 +1698,38 @@
16931698
|------|----------------|-------------|-------------|----------|--------
16941699
| 1143 |[Longest Common Subsequence](src/main/kotlin/g1101_1200/s1143_longest_common_subsequence)| Medium | Top_100_Liked_Questions, String, Dynamic_Programming, Algorithm_II_Day_17_Dynamic_Programming, Dynamic_Programming_I_Day_19, Udemy_Dynamic_Programming | 307 | 38.36
16951700
| 0994 |[Rotting Oranges](src/main/kotlin/g0901_1000/s0994_rotting_oranges)| Medium | Array, Breadth_First_Search, Matrix, Algorithm_I_Day_9_Breadth_First_Search_Depth_First_Search, Level_2_Day_10_Graph/BFS/DFS | 308 | 57.93
1701+
| 0923 |[3Sum With Multiplicity](src/main/kotlin/g0901_1000/s0923_3sum_with_multiplicity)| Medium | Array, Hash_Table, Sorting, Two_Pointers, Counting | 190 | 100.00
1702+
| 0922 |[Sort Array By Parity II](src/main/kotlin/g0901_1000/s0922_sort_array_by_parity_ii)| Easy | Array, Sorting, Two_Pointers | 257 | 87.50
1703+
| 0921 |[Minimum Add to Make Parentheses Valid](src/main/kotlin/g0901_1000/s0921_minimum_add_to_make_parentheses_valid)| Medium | String, Greedy, Stack | 131 | 92.59
1704+
| 0920 |[Number of Music Playlists](src/main/kotlin/g0901_1000/s0920_number_of_music_playlists)| Hard | Dynamic_Programming, Math, Combinatorics | 136 | 100.00
1705+
| 0919 |[Complete Binary Tree Inserter](src/main/kotlin/g0901_1000/s0919_complete_binary_tree_inserter)| Medium | Breadth_First_Search, Tree, Binary_Tree, Design | 225 | 100.00
1706+
| 0918 |[Maximum Sum Circular Subarray](src/main/kotlin/g0901_1000/s0918_maximum_sum_circular_subarray)| Medium | Array, Dynamic_Programming, Divide_and_Conquer, Queue, Monotonic_Queue, Dynamic_Programming_I_Day_5 | 339 | 86.96
1707+
| 0917 |[Reverse Only Letters](src/main/kotlin/g0901_1000/s0917_reverse_only_letters)| Easy | String, Two_Pointers | 126 | 100.00
1708+
| 0916 |[Word Subsets](src/main/kotlin/g0901_1000/s0916_word_subsets)| Medium | Array, String, Hash_Table | 397 | 88.89
1709+
| 0915 |[Partition Array into Disjoint Intervals](src/main/kotlin/g0901_1000/s0915_partition_array_into_disjoint_intervals)| Medium | Array | 510 | 76.92
1710+
| 0914 |[X of a Kind in a Deck of Cards](src/main/kotlin/g0901_1000/s0914_x_of_a_kind_in_a_deck_of_cards)| Easy | Array, Hash_Table, Math, Counting, Number_Theory | 238 | 70.00
1711+
| 0913 |[Cat and Mouse](src/main/kotlin/g0901_1000/s0913_cat_and_mouse)| Hard | Dynamic_Programming, Math, Graph, Memoization, Topological_Sort, Game_Theory | 211 | 100.00
1712+
| 0912 |[Sort an Array](src/main/kotlin/g0901_1000/s0912_sort_an_array)| Medium | Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Merge_Sort, Bucket_Sort, Counting_Sort, Radix_Sort, Udemy_Sorting_Algorithms | 606 | 98.48
1713+
| 0911 |[Online Election](src/main/kotlin/g0901_1000/s0911_online_election)| Medium | Array, Hash_Table, Binary_Search, Design, Binary_Search_II_Day_20 | 766 | 83.33
1714+
| 0910 |[Smallest Range II](src/main/kotlin/g0901_1000/s0910_smallest_range_ii)| Medium | Array, Math, Sorting, Greedy, Programming_Skills_II_Day_13 | 234 | 100.00
1715+
| 0909 |[Snakes and Ladders](src/main/kotlin/g0901_1000/s0909_snakes_and_ladders)| Medium | Array, Breadth_First_Search, Matrix | 203 | 100.00
1716+
| 0908 |[Smallest Range I](src/main/kotlin/g0901_1000/s0908_smallest_range_i)| Easy | Array, Math | 202 | 87.50
1717+
| 0907 |[Sum of Subarray Minimums](src/main/kotlin/g0901_1000/s0907_sum_of_subarray_minimums)| Medium | Array, Dynamic_Programming, Stack, Monotonic_Stack | 341 | 100.00
1718+
| 0906 |[Super Palindromes](src/main/kotlin/g0901_1000/s0906_super_palindromes)| Hard | Math, Enumeration | 153 | 100.00
1719+
| 0905 |[Sort Array By Parity](src/main/kotlin/g0901_1000/s0905_sort_array_by_parity)| Easy | Array, Sorting, Two_Pointers | 219 | 75.00
1720+
| 0904 |[Fruit Into Baskets](src/main/kotlin/g0901_1000/s0904_fruit_into_baskets)| Medium | Array, Hash_Table, Sliding_Window | 371 | 100.00
1721+
| 0903 |[Valid Permutations for DI Sequence](src/main/kotlin/g0901_1000/s0903_valid_permutations_for_di_sequence)| Hard | Dynamic_Programming | 140 | 100.00
1722+
| 0902 |[Numbers At Most N Given Digit Set](src/main/kotlin/g0901_1000/s0902_numbers_at_most_n_given_digit_set)| Hard | Array, Dynamic_Programming, Math, Binary_Search | 138 | 100.00
1723+
| 0901 |[Online Stock Span](src/main/kotlin/g0901_1000/s0901_online_stock_span)| Medium | Stack, Design, Monotonic_Stack, Data_Stream | 641 | 75.00
1724+
| 0900 |[RLE Iterator](src/main/kotlin/g0801_0900/s0900_rle_iterator)| Medium | Array, Design, Counting, Iterator | 175 | 83.33
1725+
| 0899 |[Orderly Queue](src/main/kotlin/g0801_0900/s0899_orderly_queue)| Hard | String, Math, Sorting | 148 | 100.00
1726+
| 0898 |[Bitwise ORs of Subarrays](src/main/kotlin/g0801_0900/s0898_bitwise_ors_of_subarrays)| Medium | Array, Dynamic_Programming, Bit_Manipulation | 812 | 100.00
1727+
| 0897 |[Increasing Order Search Tree](src/main/kotlin/g0801_0900/s0897_increasing_order_search_tree)| Easy | Depth_First_Search, Tree, Binary_Tree, Stack, Binary_Search_Tree | 128 | 85.71
1728+
| 0896 |[Monotonic Array](src/main/kotlin/g0801_0900/s0896_monotonic_array)| Easy | Array, Programming_Skills_II_Day_1 | 576 | 90.91
1729+
| 0895 |[Maximum Frequency Stack](src/main/kotlin/g0801_0900/s0895_maximum_frequency_stack)| Hard | Hash_Table, Stack, Design, Ordered_Set | 617 | 100.00
1730+
| 0894 |[All Possible Full Binary Trees](src/main/kotlin/g0801_0900/s0894_all_possible_full_binary_trees)| Medium | Dynamic_Programming, Tree, Binary_Tree, Recursion, Memoization | 257 | 100.00
1731+
| 0893 |[Groups of Special-Equivalent Strings](src/main/kotlin/g0801_0900/s0893_groups_of_special_equivalent_strings)| Medium | Array, String, Hash_Table | 141 | 100.00
1732+
| 0892 |[Surface Area of 3D Shapes](src/main/kotlin/g0801_0900/s0892_surface_area_of_3d_shapes)| Easy | Array, Math, Matrix, Geometry | 180 | 100.00
16961733
| 0891 |[Sum of Subsequence Widths](src/main/kotlin/g0801_0900/s0891_sum_of_subsequence_widths)| Hard | Array, Math, Sorting | 481 | 100.00
16971734
| 0890 |[Find and Replace Pattern](src/main/kotlin/g0801_0900/s0890_find_and_replace_pattern)| Medium | Array, String, Hash_Table | 150 | 100.00
16981735
| 0889 |[Construct Binary Tree from Preorder and Postorder Traversal](src/main/kotlin/g0801_0900/s0889_construct_binary_tree_from_preorder_and_postorder_traversal)| Medium | Array, Hash_Table, Tree, Binary_Tree, Divide_and_Conquer | 168 | 100.00

src/main/kotlin/g0801_0900/s0815_bus_routes/readme.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ Return _the least number of buses you must take to travel from_ `source` _to_ `t
4141
```kotlin
4242
import java.util.LinkedList
4343
import java.util.Queue
44-
import kotlin.collections.ArrayList
45-
import kotlin.collections.HashSet
46-
import kotlin.collections.MutableSet
4744

4845
class Solution {
4946
fun numBusesToDestination(routes: Array<IntArray>, source: Int, target: Int): Int {

src/main/kotlin/g0801_0900/s0819_most_common_word/readme.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,14 @@ The words in `paragraph` are **case-insensitive** and the answer should be retur
3434
## Solution
3535

3636
```kotlin
37-
import java.util.Locale
38-
3937
@Suppress("NAME_SHADOWING")
4038
class Solution {
4139
fun mostCommonWord(paragraph: String, banned: Array<String>): String {
4240
var paragraph = paragraph
43-
paragraph = paragraph.replace("\\p{Punct}".toRegex(), " ").lowercase(Locale.getDefault())
41+
paragraph = paragraph.replace("\\p{Punct}".toRegex(), " ").lowercase()
4442
val a = paragraph.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
4543
for (i in banned.indices) {
46-
banned[i] = banned[i].lowercase(Locale.getDefault())
44+
banned[i] = banned[i].lowercase()
4745
}
4846
val map: MutableMap<String, Int> = HashMap()
4947
for (s in a) {

src/main/kotlin/g0801_0900/s0831_masking_personal_information/readme.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,13 @@ Thus, the resulting masked number is "\*\*\*-\*\*\*-7890".
8686
## Solution
8787

8888
```kotlin
89-
import java.util.Locale
90-
9189
class Solution {
9290
fun maskPII(s: String): String {
9391
val masked = StringBuilder()
9492
return if (Character.isAlphabetic(s[0].code)) {
9593
val locationOfAtSymbol = s.indexOf("@") - 1
9694
masked.append(s[0]).append("*****").append(s.substring(locationOfAtSymbol))
97-
masked.toString().lowercase(Locale.getDefault())
95+
masked.toString().lowercase()
9896
} else {
9997
val allDigits = StringBuilder()
10098
var pointer = -1

src/main/kotlin/g0801_0900/s0843_guess_the_word/readme.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ For each test case, you have exactly `10` guesses to guess the word. At the end
4848
## Solution
4949

5050
```kotlin
51-
import java.util.Collections
52-
5351
/*
5452
* // This is the Master's API interface.
5553
* // You should not implement it, or speculate about its implementation
@@ -65,8 +63,8 @@ class Solution {
6563
private var next = 0
6664

6765
fun findSecretWord(wordlist: Array<String>, master: Master) {
68-
val list = listOf(*wordlist)
69-
Collections.shuffle(list)
66+
val list = wordlist.copyOf()
67+
list.shuffle()
7068
val test = BooleanArray(wordlist.size)
7169
while (true) {
7270
val num = master.guess(list[next])
@@ -77,7 +75,7 @@ class Solution {
7775
}
7876
}
7977

80-
private fun updateList(list: List<String?>, test: BooleanArray, num: Int) {
78+
private fun updateList(list: Array<String>, test: BooleanArray, num: Int) {
8179
val index = next
8280
for (i in index + 1 until test.size) {
8381
if (test[i]) {
@@ -92,10 +90,10 @@ class Solution {
9290
}
9391
}
9492

95-
private fun getSame(word1: String?, word2: String?): Int {
93+
private fun getSame(word1: String, word2: String): Int {
9694
var ret = 0
9795
for (i in 0..5) {
98-
if (word1!![i] == word2!![i]) {
96+
if (word1[i] == word2[i]) {
9997
ret++
10098
}
10199
}

src/main/kotlin/g0801_0900/s0855_exam_room/readme.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ Implement the `ExamRoom` class:
4242
## Solution
4343

4444
```kotlin
45-
import java.util.Objects
46-
4745
class ExamRoom() {
4846
private class Node(var `val`: Int, map: MutableMap<Int?, Node>) {
4947
var pre: Node? = null
@@ -107,7 +105,7 @@ class ExamRoom() {
107105
}
108106
return if (right > max) {
109107
Node(n - 1, map).insert(tail.pre)
110-
} else Node(maxAt, map).insert(Objects.requireNonNull(maxAtLeft))
108+
} else Node(maxAt, map).insert(maxAtLeft)
111109
}
112110

113111
fun leave(p: Int) {

src/main/kotlin/g0801_0900/s0857_minimum_cost_to_hire_k_workers/readme.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,8 @@ class Solution {
4949
workers[i] = Worker(wage[i], quality[i])
5050
}
5151
workers.sortBy { it!!.ratio() }
52-
val maxHeap = PriorityQueue { a: Int?, b: Int? ->
53-
Integer.compare(
54-
b!!, a!!
55-
)
52+
val maxHeap = PriorityQueue { a: Int, b: Int ->
53+
b.compareTo(a)
5654
}
5755
var sumQuality = 0
5856
var result = Double.MAX_VALUE

src/main/kotlin/g0801_0900/s0890_find_and_replace_pattern/readme.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,11 @@ Recall that a permutation of letters is a bijection from letters to letters: eve
3535
## Solution
3636

3737
```kotlin
38-
import java.util.Collections
39-
4038
class Solution {
4139
fun findAndReplacePattern(words: Array<String>, pattern: String): List<String> {
4240
val finalans: MutableList<String> = ArrayList()
4341
if (pattern.length == 1) {
44-
Collections.addAll(finalans, *words)
42+
finalans.addAll(words)
4543
return finalans
4644
}
4745
for (word in words) {
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
[![](https://img.shields.io/github/stars/javadev/LeetCode-in-Kotlin?label=Stars&style=flat-square)](https://github.com/javadev/LeetCode-in-Kotlin)
2+
[![](https://img.shields.io/github/forks/javadev/LeetCode-in-Kotlin?label=Fork%20me%20on%20GitHub%20&style=flat-square)](https://github.com/javadev/LeetCode-in-Kotlin/fork)
3+
4+
## 892\. Surface Area of 3D Shapes
5+
6+
Easy
7+
8+
You are given an `n x n` `grid` where you have placed some `1 x 1 x 1` cubes. Each value `v = grid[i][j]` represents a tower of `v` cubes placed on top of cell `(i, j)`.
9+
10+
After placing these cubes, you have decided to glue any directly adjacent cubes to each other, forming several irregular 3D shapes.
11+
12+
Return _the total surface area of the resulting shapes_.
13+
14+
**Note:** The bottom face of each shape counts toward its surface area.
15+
16+
**Example 1:**
17+
18+
![](https://assets.leetcode.com/uploads/2021/01/08/tmp-grid2.jpg)
19+
20+
**Input:** grid = \[\[1,2],[3,4]]
21+
22+
**Output:** 34
23+
24+
**Example 2:**
25+
26+
![](https://assets.leetcode.com/uploads/2021/01/08/tmp-grid4.jpg)
27+
28+
**Input:** grid = \[\[1,1,1],[1,0,1],[1,1,1]]
29+
30+
**Output:** 32
31+
32+
**Example 3:**
33+
34+
![](https://assets.leetcode.com/uploads/2021/01/08/tmp-grid5.jpg)
35+
36+
**Input:** grid = \[\[2,2,2],[2,1,2],[2,2,2]]
37+
38+
**Output:** 46
39+
40+
**Constraints:**
41+
42+
* `n == grid.length == grid[i].length`
43+
* `1 <= n <= 50`
44+
* `0 <= grid[i][j] <= 50`
45+
46+
## Solution
47+
48+
```kotlin
49+
class Solution {
50+
fun surfaceArea(grid: Array<IntArray>): Int {
51+
var surfaceArea = 0
52+
for (i in grid.indices) {
53+
for (j in grid[i].indices) {
54+
if (grid[i][j] > 0) {
55+
surfaceArea += 4 * grid[i][j] + 2
56+
surfaceArea -= hiddenSides(i, j, grid)
57+
}
58+
}
59+
}
60+
return surfaceArea
61+
}
62+
63+
private fun hiddenSides(i: Int, j: Int, grid: Array<IntArray>): Int {
64+
var hidden = 0
65+
val tower = grid[i][j]
66+
if (j + 1 < grid[i].size && grid[i][j + 1] > 0) {
67+
hidden += tower.coerceAtMost(grid[i][j + 1])
68+
}
69+
if (j - 1 >= 0 && grid[i][j - 1] > 0) {
70+
hidden += tower.coerceAtMost(grid[i][j - 1])
71+
}
72+
if (i + 1 < grid.size && grid[i + 1][j] > 0) {
73+
hidden += tower.coerceAtMost(grid[i + 1][j])
74+
}
75+
if (i - 1 >= 0 && grid[i - 1][j] > 0) {
76+
hidden += tower.coerceAtMost(grid[i - 1][j])
77+
}
78+
return hidden
79+
}
80+
}
81+
```
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
[![](https://img.shields.io/github/stars/javadev/LeetCode-in-Kotlin?label=Stars&style=flat-square)](https://github.com/javadev/LeetCode-in-Kotlin)
2+
[![](https://img.shields.io/github/forks/javadev/LeetCode-in-Kotlin?label=Fork%20me%20on%20GitHub%20&style=flat-square)](https://github.com/javadev/LeetCode-in-Kotlin/fork)
3+
4+
## 893\. Groups of Special-Equivalent Strings
5+
6+
Medium
7+
8+
You are given an array of strings of the same length `words`.
9+
10+
In one **move**, you can swap any two even indexed characters or any two odd indexed characters of a string `words[i]`.
11+
12+
Two strings `words[i]` and `words[j]` are **special-equivalent** if after any number of moves, `words[i] == words[j]`.
13+
14+
* For example, `words[i] = "zzxy"` and `words[j] = "xyzz"` are **special-equivalent** because we may make the moves `"zzxy" -> "xzzy" -> "xyzz"`.
15+
16+
A **group of special-equivalent strings** from `words` is a non-empty subset of words such that:
17+
18+
* Every pair of strings in the group are special equivalent, and
19+
* The group is the largest size possible (i.e., there is not a string `words[i]` not in the group such that `words[i]` is special-equivalent to every string in the group).
20+
21+
Return _the number of **groups of special-equivalent strings** from_ `words`.
22+
23+
**Example 1:**
24+
25+
**Input:** words = ["abcd","cdab","cbad","xyzz","zzxy","zzyx"]
26+
27+
**Output:** 3
28+
29+
**Explanation:**
30+
31+
One group is ["abcd", "cdab", "cbad"], since they are all pairwise special equivalent, and none of the other strings is all pairwise special equivalent to these.
32+
33+
The other two groups are ["xyzz", "zzxy"] and ["zzyx"].
34+
35+
Note that in particular, "zzxy" is not special equivalent to "zzyx".
36+
37+
**Example 2:**
38+
39+
**Input:** words = ["abc","acb","bac","bca","cab","cba"]
40+
41+
**Output:** 3
42+
43+
**Constraints:**
44+
45+
* `1 <= words.length <= 1000`
46+
* `1 <= words[i].length <= 20`
47+
* `words[i]` consist of lowercase English letters.
48+
* All the strings are of the same length.
49+
50+
## Solution
51+
52+
```kotlin
53+
class Solution {
54+
fun numSpecialEquivGroups(words: Array<String>): Int {
55+
val set: HashSet<String> = HashSet()
56+
var result = 0
57+
for (str in words) {
58+
if (set.add(getHashBySwap(str.toCharArray()))) {
59+
result++
60+
}
61+
}
62+
return result
63+
}
64+
65+
private fun getHashBySwap(chars: CharArray): String {
66+
for (i in chars.indices) {
67+
var j = i + 2
68+
while (j < chars.size) {
69+
if (chars[i] > chars[j]) {
70+
val temp = chars[j]
71+
chars[j] = chars[i]
72+
chars[i] = temp
73+
}
74+
j += 2
75+
}
76+
}
77+
return String(chars)
78+
}
79+
}
80+
```

0 commit comments

Comments
 (0)