我的题解
class Solution:
def minOperations(self, s: str) - int:
return min(self.startWith1(s),self.startWith0(s))
def startWith1(self,s:str) - int:
i,cnt 0,0
key 0
maps {
1: 1 ,
0: 0
while i len(s):
key key^1
if s[i] maps[key]:
pass
else:
cnt 1
return cnt
def startWith0(self,s:str) - int:
i,cnt 0,0
key 1
maps {
1: 1 ,
0: 0
while i len(s):
key key^1
if s[i] maps[key]:
pass
else:
cnt 1
return cnt
我的思路
1 一个既定的字符串 要么0开头要么1开头 这两种情况下要翻转操作是不同的
2 我们要求这两种情况的解 并且取它们的最小值
其余的优秀的题解
class Solution: def minOperations(self, s: str) - int: n len(s) cnt, cnt2 0, 0 for i in range(n): if s[i] ! str(i % 2): cnt 1 else: cnt2 1 return min(cnt, cnt2)
一次循环下计算两种情况的cnt
class Solution: def minOperations(self, s: str) - int: x s[::2].count( 1 ) s[1::2].count( 0 ) return min(x, len(s) - x)
s[::2].count( 1 ) 偶数位有多少个1
s[1::2].count( 0 )奇数位有多少个0
相加 这是表示1开头的cnt
len(s)-x 正好表示相反的情况 即是 0开头的cnt



