LeetCode 1888. 使二进制字符串字符交替的最少反转次数
原题链接
中等
作者:
autumn_0
,
2024-10-08 18:00:12
,
所有人可见
,
阅读 5
class Solution {
public int minFlips(String S) {
char[] s = S.toCharArray();
char[] target = new char[]{'0', '1'};
int n = s.length;
int cnt = 0;
for(int i = 0; i < n; i ++ ){
if(s[i] != target[i % 2]){
cnt ++ ;
}
}
int ans = Math.min(cnt, n - cnt);
for(int i = 0; i < n; i ++ ){
if(s[i] != target[i % 2]) cnt -- ;
if(s[i] != target[(i + n) % 2]) cnt ++ ;
ans = Math.min(Math.min(cnt,n - cnt), ans);
}
return ans;
}
}