• 1822. 最小移动次数


    1822. 最小移动次数

    中文English

    给定由N个字母 'a' 和/或 'b' 组成的字符串S。 在一次操作中,可以将一个字母替换为另一个字母('a' 替换为 'b' 或 'b' 替换为 'a')。 返回得到不包含三个连续相同字母的字符串所需的最小操作次数。

    样例

    示例1:
    输入:
    S = "baaaaa"
    输出: 1
    解释:将字符串变成: "baabaa", 这样一次操作就可以使得字符串S没有三个相同的连续字母。
    
    示例2:
    输入:
    S = "baaabbaabbba"
    输出: 2
    解释:将字符串变成: "bbaabbaabbaa", 这样两次次操作就可以使得字符串S没有三个相同的连续字母。
    
    示例3:
    输入:
    S="baabab"
    输出: 0
    

    注意事项

    • N 是一个整数,范围是: [0, 2000000]
    • 字符串S仅仅由字母 'a' 和/或 'b' 组成
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param S: a string
        @return:  return the minimum number of moves
        """
        '''
        大致思路:
        1.初始化count=0,如果当前的字符串连续次数//3 == 0的话,不加,否则count += 连续次数//3,最终返回
        '''
        def MinimumMoves(self,S):
            if S == '':
                return 0
            count = 0 
            n = 1
            p = S[0]
            S = S + ' '
            for i in range(1,len(S)):
                if p == S[i]:
                    n += 1
                else:
                    count += n//3
                    p = S[i]
                    n = 1
            return  count
  • 相关阅读:
    背包问题
    计蒜客lev3
    线段树BIT操作总结
    图论题收集
    Codeforces Round #607 (Div. 2) 训练总结及A-F题解
    2-sat 学习笔记
    洛谷 P3338 【ZJOI2014】力/BZOJ 3527 力 题解
    $noi.ac$ #51 array 题解
    洛谷 P3292 【SCOI2016】幸运数字/BZOJ 4568 幸运数字 题解
    洛谷 P5283 【十二省联考2019】异或粽子 题解
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12818821.html
Copyright © 2020-2023  润新知