1
class Solution {
2
public:
3
int balancedString(string s) {
4
int n = s.length();
5
unordered_map<char, int> umap;
6
for (auto x : s) {
7
umap[x]++;
8
}
9
umap['Q'] = umap['Q'] - n / 4 > 0 ? umap['Q'] - n / 4 : 0;
10
umap['W'] = umap['W'] - n / 4 > 0 ? umap['W'] - n / 4 : 0;
11
umap['E'] = umap['E'] - n / 4 > 0 ? umap['E'] - n / 4 : 0;
12
umap['R'] = umap['R'] - n / 4 > 0 ? umap['R'] - n / 4 : 0;
13
int count = umap['Q'] + umap['W'] + umap['E'] + umap['R'];
14
if (count == 0) return 0;
15
int i = 0, ans = INT_MAX;
16
unordered_map<char, int> newMap;
17
for (int j = 0; j < n; j++) {
18
newMap[s[j]]++;
19
if (newMap[s[j]] <= umap[s[j]]) {
20
count--;
21
while (count == 0) {
22
newMap[s[i]]--;
23
if (newMap[s[i]] < umap[s[i]]) {
24
count++;
25
ans = min(ans, j - i + 1);
26
}
27
i++;
28
}
29
}
30
}
31
return ans;
32
}
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0