将字符串翻转到单调递增

问题描述:

如果一个由 '0' 和 '1' 组成的字符串,是以一些 '0'(可能没有 '0')后面跟着一些 '1'(也可能没有 '1')的形式组成的,那么该字符串是单调递增的。
我们给出一个由字符 '0' 和 '1' 组成的字符串 S,我们可以将任何 '0' 翻转为 '1' 或者将 '1' 翻转为 '0'。
返回使 S 单调递增的最小翻转次数。

示例 1:
输入:"00110"
输出:1
解释:我们翻转最后一位得到 00111.

示例 2:
输入:"010110"
输出:2
解释:我们翻转得到 011111,或者是 000111。

示例 3:
输入:"00011000"
输出:2
解释:我们翻转得到 00000000。
 
提示:
1 <= S.length <= 20000
S 中只包含字符 '0' 和 '1'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flip-string-to-monotone-increasing

思路:

还是太菜了...
最开始的时候试图从第一个非0的位置开始计算,如果后面的0多就将0变1,否则将1变0。
这种想法当然是错误的~
后来发现如果最后连续位置是1的话,根本没没必要算进来,于是做了一些改进,从第一个非0位置开始到最后一个0位置截至,判断0和1的个数,并相应做出转变。
emmmm,这么想也不对!emmmm,不出所料...
然后,评论区的大佬是这样子想的:

题解:

标签: none

添加新评论