LeetCode 1758. 生成交替二进制字符串的最少操作数缩略图

给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。

交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况,那么该字符串就是交替字符串。例如,字符串 "010" 是交替字符串,而字符串 "0100" 不是。

返回使 s 变成 交替字符串 所需的 最少 操作数。

1758. 生成交替二进制字符串的最少操作数 – 力扣(Leetcode)

LeetCode 1758. 生成交替二进制字符串的最少操作数插图
OpenCV步步精深-可心科创工作室

思路:

直接构建对应长度的交替字符串,然后和现有的比较就行了。

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)
LeetCode 1758. 生成交替二进制字符串的最少操作数插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注