题目
给你一个仅由字符 ‘0’ 和 ‘1’ 组成的字符串 s 。一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。
交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 “010” 是交替字符串,而字符串 “0100” 不是。
返回使 s 变成 交替字符串 所需的 最少 操作数。
题目分析:可以知道共有两种字符串即以1开头或者以0开头。
那么很简单,如果是0开头,该字符串索引为偶数的都是0,索引为奇数的都是1,我们只需要统计偶数索引的值是1的和奇数索引的值是0的,即可获取需要的操作数。同理如果要是1开头,也是如此。因为题目中说最小操作数,可以看出是贪心。我们应该取两种变法的最优解,
题解
class Solution: def minOperations(self, s: str) -> int: # 如果第一个字符为0 a = s[0::2].count('1') + s[1::2].count('0') # 如果第一个字符为1 b = s[0::2].count('0') + s[1::2].count('1') return min(a, b)