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