Medium
第一眼看到题目,感觉无从下手,只能在纸上画一画慢慢分析了
分析的出一下结论(给小伙伴提示,最好还是能自己在纸上画一画,更加直观)
1
连续的0
和一个1
一个0
的效果是一样的,需要开关的次数是一样的10011
,首先简化来看就变成了101
,贪心优先满足前面的1
,第一步肯定是都开。变为111
,然后关再开,具体开哪几个关哪几个,取决于后面1
和0
的位置1
,那我们需要两次操作来满足。即10
这种形式需要多两次。1
还需要再加上一次不知道小伙伴有没有理解,这个还是需要自己推演一遍
以上,AC!
python3
class Solution:
def minFlips(self, target: str) -> int:
res = 0
pre = '0'
for i in target:
if i == '0':
if pre == '1':
res += 2
pre = i
if pre == '1':
res += 1
return res