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

 

posted @ 2020-05-02 17:42  风不再来  阅读(348)  评论(0编辑  收藏  举报