解法一
开头的0都可以忽略,这些都不需要翻转。然后统计后续的连续相同子串个数即为需要翻转的次数,这是两次翻转保持原值的性质可以得到的。
写法上还可以更简洁,比如开头加上一个"1"
,然后直接比较前后两位是否相同计算。
class Solution {
public int minFlips(String target) {
int i;
int start = target.indexOf('1');
if (start < 0) {
return 0;
}
char ch = '1';
int ans = 1;
for (i = start; i < target.length(); ++i) {
if (target.charAt(i) == ch) {
continue;
}
ch = target.charAt(i);
++ans;
}
return ans;
}
}