Skip to content

Commit d751adf

Browse files
add alt sol 1415
1 parent 0f14d56 commit d751adf

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,38 @@ private fun isValid(num: Int, pos: Int, arr: IntArray): Boolean {
5858
if (pos + num + 1 >= arr.size) return false
5959
if (arr[pos + num + 1] != 0) return false
6060
return true
61+
}
62+
63+
/**
64+
* 1415. The k-th Lexicographical String of All Happy Strings of Length n
65+
* Alternative Solution
66+
*/
67+
68+
fun getHappyStringAltSolution(n: Int, k: Int): String {
69+
val count = intArrayOf(0)
70+
val result = StringBuilder()
71+
val chars = charArrayOf('a', 'b', 'c')
72+
73+
fun backtrack(current: StringBuilder) {
74+
if (current.length == n) {
75+
count[0]++
76+
if (count[0] == k) {
77+
result.append(current.toString())
78+
}
79+
return
80+
}
81+
82+
if (count[0] >= k) return
83+
84+
for (char in chars) {
85+
if (current.isEmpty() || current.last() != char) {
86+
current.append(char)
87+
backtrack(current)
88+
current.deleteCharAt(current.length - 1)
89+
}
90+
}
91+
}
92+
93+
backtrack(StringBuilder())
94+
return result.toString()
6195
}

0 commit comments

Comments
 (0)