给你一个仅由字符 '0'
和 '1'
组成的字符串 s
。一步操作中,你可以将任一 '0'
变成 '1'
,或者将 '1'
变成 '0'
。
交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 "010"
是交替字符串,而字符串 "0100"
不是。
返回使 s
变成 交替字符串 所需的 最少 操作数。
1758. 生成交替二进制字符串的最少操作数 – 力扣(Leetcode)

思路:
直接构建对应长度的交替字符串,然后和现有的比较就行了。
python3实现:
class Solution:
def minOperations(self, s: str) -> int:
# 直接生成对应长度的交替数,比较改变最小的操作数就行了
len_s = len(s)
# 奇数位0,偶数位1
a = ["1" if idx % 2 == 0 else "0" for idx in range(len_s)]
# 奇数位1,偶数位0
b = ["0" if idx % 2 == 0 else "1" for idx in range(len_s)]
c = list(s)
p = 0
count1 = 0
count2 = 0
while p <= len_s - 1:
if c[p] != a[p]:
count1 += 1
if c[p] != b[p]:
count2 += 1
p += 1
return min(count1,count2)
