Lexicographically Smallest String After Applying Operations LeetCode solution in Java

1
class Solution {
2
private String result;
3

4
public String findLexSmallestString(String s, int a, int b) {
5
result = "z";
6
HashSet<String> set = new HashSet<>();
7
dfs(s, a, b, set);
8
return result;
9
}
10

11
private void dfs(String s, int a, int b, HashSet<String> set) {
12
if (set.contains(s)) return;
13
set.add(s);
14
String s1, s2;
15
s1 = addA(s, a);
16
s2 = rotateB(s, b);
17
dfs(s1, a, b, set);
18
dfs(s2, a, b, set);
19
}
20

21
private String addA(String s, int a) {
22
char c[] = s.toCharArray();
23
int i, temp;
24
for (i = 1; i < s.length(); i += 2) {
25
temp = c[i] - '0';
26
temp += a;
27
temp = temp % 10;
28
c[i] = (char) (temp + '0');
29
}
30
s = new String(c);
31
if (result.compareTo(s) > 0) result = s;
32
return s;
33
}
34

35
private String rotateB(String s, int b) {
36
if (b < 0) b += s.length();
37
b = b % s.length();
38
b = s.length() - b;
39
s = s.substring(b) + s.substring(0, b);
40
if (result.compareTo(s) > 0) result = s;
41
return s;
42
}
43
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0