0. 交替二进制字符串
交替二进制字符串 是指有0,1 构成的、且0,1相间的字符串,比如“010”, “1010”
解决的方法,可以遍历两种可能:‘0’开头的交替字符串 或者 ‘1’ 开头的字符串。
1. leetcode 1758 生成交替二进制字符串的最少操作数
class Solution:
def minOperations(self, s: str) -> int:
temp1 = 0
temp2 = 0
for i in range(len(s)):
if i%2 == 0:
if s[i] != "0":
temp1 +=1
else:
temp2 +=1
else:
if s[i] != "1":
temp1 +=1
else:
temp2 +=1
return min(temp1, temp2)
import collections
class Solution:
def minSwaps(self, s: str) -> int:
dicta = collections.Counter(s)
if abs(dicta['0']- dicta['1'])>1:
return -1
res = 0
N = len(s)
if N%2 == 0:
new1 = '01'*(N//2)
new2 = '10' *(N//2)
count1 = 0
count2 = 0
for i in range(N):
if new1[i] !=s[i]:
count1+=1
if new2[i] != s[i]:
count2+=1
res = min(count1, count2)
else:
if dicta['0'] > dicta['1']:
new = '01'*(N//2) + '0'
else:
new = '10'*(N//2) + '1'
for i in range(N):
if s[i] != new[i]:
res +=1
return res//2