1
var balancedString = function (s) {
2
let output = Infinity;
3

4
let map = { Q: 0, W: 0, E: 0, R: 0 };
5

6
for (let letter of s) {
7
map[letter]++;
8
}
9

10
let valueGoal = s.length / 4;
11

12
let remainder = 0;
13

14
let count = 4;
15

16
for (let [key, val] of Object.entries(map)) {
17
if (val > valueGoal) {
18
remainder = remainder + (val - valueGoal);
19
}
20

21
if (val === valueGoal || val < valueGoal) {
22
map[key] = -Infinity;
23
count--;
24
}
25
}
26

27
if (remainder === 0) {
28
return 0;
29
}
30

31
let left = 0;
32

33
let right = 0;
34

35
while (right < s.length) {
36
if (map[s[right]] !== -Infinity) {
37
map[s[right]]--;
38

39
if (map[s[right]] === valueGoal) {
40
count--;
41
}
42
}
43

44
while (count === 0) {
45
output = Math.min(output, right - left + 1);
46

47
if (map[s[left]] !== -Infinity) {
48
map[s[left]]++;
49

50
if (map[s[left]] > valueGoal) {
51
count++;
52
}
53
}
54
left++;
55
}
56

57
right++;
58
}
59

60
return output;
61
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0