解法一
开头的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;}}
