如果一个由
'0'
和'1'
组成的字符串,是以一些'0'
(可能没有'0'
)后面跟着一些'1'
(也可能没有'1'
)的形式组成的,那么该字符串是单调递增的。我们给出一个由字符
'0'
和'1'
组成的字符串S
,我们可以将任何'0'
翻转为'1'
或者将'1'
翻转为'0'
。返回使
S
单调递增的最小翻转次数。
示例 1:
输入:"00110" 输出:1 解释:我们翻转最后一位得到 00111.
思路:
1、首先从首部开始寻找最先出现的‘1’位置l,从尾部寻找最后出现的‘0’的位置h
2、 对字符串的翻转出现在[l,h]区间中
3、以gap为分割点从l到h每次+1递增,判断gap左边‘1’的个数,判断gap右边‘0’的个数,相加求和,比较每个gap分割点的和的最小值,如果不做优化,会超时