思路
有两个操作,全部将左边的刷成一个值,或者将右边的全部刷成一个值,得到的启发是一定需要从两端进行操作,可以模拟一下例子2:
c
"010101" -> "110101" 操作1次 -> "110100" 操作1次 -> "000100" 操作2次
最后变为"111111" 操作5次
总计9次
也就是我们每一次都比较左右两端哪一个操作次数少,那么我们就操作他,全部刷为一个值,最后全部判断一遍就得到了最后的结果。
python
class Solution:
def minimumCost(self, s: str) -> int:
n = len(s)
i = 0
j = n - 1
res = 0
while i < j:
while i < j and s[i] == s[i + 1]:
i += 1
if i >= j: break
while i < j and s[j] == s[j - 1]:
j -= 1
if i + 1 < n - j:
res += i + 1
i += 1
else:
res += n - j
j -= 1
return res