Lexicographically Smallest String After Applying Operations LeetCode solution in JavaScript

1
var findLexSmallestString = function (s, a, b) {
2
const n = s.length;
3
const visited = new Set();
4
const queue = [];
5

6
visited.add(s);
7
queue.push(s);
8

9
let minNum = s;
10

11
while (queue.length > 0) {
12
const currNum = queue.shift();
13

14
if (currNum < minNum) minNum = currNum;
15

16
const justRotate = rotate(currNum);
17
const justAdd = add(currNum);
18

19
if (!visited.has(justRotate)) {
20
visited.add(justRotate);
21
queue.push(justRotate);
22
}
23

24
if (!visited.has(justAdd)) {
25
visited.add(justAdd);
26
queue.push(justAdd);
27
}
28
}
29

30
return minNum;
31

32
function rotate(num) {
33
let rotatedNum = "";
34
const start = n - b;
35

36
for (let i = 0; i < b; i++) {
37
rotatedNum += num.charAt(start + i);
38
}
39

40
const restDigs = num.substring(0, n - b);
41
rotatedNum += restDigs;
42

43
return rotatedNum;
44
}
45

46
function add(num) {
47
let nextNum = "";
48

49
for (let i = 0; i < n; i++) {
50
let currDig = num.charAt(i);
51

52
if (i % 2 == 0) {
53
nextNum += currDig;
54
} else {
55
let newDig = (parseInt(currDig) + a) % 10;
56
nextNum += newDig;
57
}
58
}
59

60
return nextNum;
61
}
62
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0