Skip to content

Commit 62c3d92

Browse files
add 1980
1 parent 9fd7867 commit 62c3d92

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

contest/src/main/java/com/github/contest/Execute.kt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.github.contest
22

33

4-
import com.github.contest.heap.findDiagonalOrderProdVariant
4+
import com.github.contest.backtracking.findDifferentBinaryString
5+
import java.util.TreeMap
56

67

78
/**
@@ -10,17 +11,22 @@ import com.github.contest.heap.findDiagonalOrderProdVariant
1011

1112
fun main() {
1213

13-
findDiagonalOrderProdVariant(
14-
listOf(
15-
listOf(1, 2, 3, 4, 5),
16-
listOf(6, 7),
17-
listOf(8)
18-
)
19-
).also { println(it.printArray()) }
14+
findDifferentBinaryString(arrayOf("00", "01"))
2015

2116
}
2217

2318

19+
fun workWithTreeMap() {
20+
val treeMapOne = TreeMap<String, Int>()
21+
treeMapOne["apple"] = 1
22+
treeMapOne["banana"] = 2
23+
treeMapOne["cherry"] = 3
24+
25+
println("TreeMap with natural ordering:")
26+
treeMapOne.forEach { (key, value) -> println("$key: $value") }
27+
}
28+
29+
2430
fun IntArray.printArray() {
2531
var s = when (this.size) {
2632
0 -> "[]"

contest/src/main/java/com/github/contest/backtracking/BacktrackingLeetcode.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,32 @@ private fun generateHappyString(
141141
subset.deleteCharAt(subset.length - 1)
142142
}
143143
}
144+
}
145+
146+
/**
147+
* 1980. Find Unique Binary String
148+
*/
149+
150+
151+
fun findDifferentBinaryString(nums: Array<String>): String {
152+
val set = mutableSetOf<String>()
153+
for (num in nums) set.add(num)
154+
return generateBinaryString(set, 0, nums[0].length, StringBuilder())
155+
}
156+
157+
private fun generateBinaryString(set: Set<String>, index: Int, n: Int, str: StringBuilder): String {
158+
if (index == n) {
159+
return if (!set.contains(str.toString())) str.toString() else ""
160+
}
161+
repeat(2) {
162+
str.append(it.toString())
163+
val ans = generateBinaryString(set, index + 1, n, str)
164+
if (ans.isNotEmpty()) return ans
165+
str.deleteLast()
166+
}
167+
return ""
168+
}
169+
170+
private fun StringBuilder.deleteLast() {
171+
if (isNotEmpty()) this.deleteCharAt(this.length - 1)
144172
}

0 commit comments

Comments
 (0)