-
Notifications
You must be signed in to change notification settings - Fork 1
/
TheKthLexicographicalString.java
49 lines (48 loc) · 1.36 KB
/
TheKthLexicographicalString.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* 1415. The k-th Lexicographical String of All Happy Strings of Length n
* 回溯
* @author LBW
*/
public class TheKthLexicographicalString {
private int count = 0;
private final char[] candidates = new char[]{'a', 'b', 'c'};
public String getHappyString(int n, int k) {
count = 0;
StringBuilder builder = new StringBuilder();
return dfs(n, k, builder);
}
private String dfs(int n, int k, StringBuilder builder) {
int len = builder.length();
if (len == n) {
count += 1;
if (count == k) {
return builder.toString();
}
else
return "";
}
if (len == 0) {
for (char c: candidates) {
builder.append(c);
String str = dfs(n, k, builder);
if (!str.equals("")) {
return str;
}
builder.deleteCharAt(len);
}
}
else {
for (char c: candidates) {
if (c == builder.charAt(len - 1))
continue;
builder.append(c);
String str = dfs(n, k, builder);
if (!str.equals("")) {
return str;
}
builder.deleteCharAt(len);
}
}
return "";
}
}