Minimum Number of Flips to Make the Binary String Alternating LeetCode solution in C++

1
class Solution {
2
public:
3
int minFlips(string s) {
4
int n = s.size();
5
string ss = s + s;
6
string s1, s2;
7
int ans = INT_MAX;
8
for (int i = 0; i < ss.size(); i++) {
9
s1 += (i % 2 ? '1' : '0');
10
s2 += (i % 2 ? '0' : '1');
11
}
12
int ans1 = 0, ans2 = 0;
13
for (int i = 0; i < ss.size(); i++) {
14
if (s1[i] != ss[i]) ans1++;
15
if (s2[i] != ss[i]) ans2++;
16
if (i >= n - 1) {
17
if (i != n - 1 && s1[i - n] != ss[i - n]) ans1--;
18
if (i != n - 1 && s2[i - n] != ss[i - n]) ans2--;
19
ans = min({ans, ans1, ans2});
20
}
21
}
22
return ans;
23
}
24
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0