1819. 最长双交替子串(回顾)

Posted yunxintryyoubest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1819. 最长双交替子串(回顾)相关的知识,希望对你有一定的参考价值。

1819. 最长双交替子串

中文English

给定一个长度为NN且只包含ab的字符串SS。你需要找出最长的子串长度,使得其中不包含三个连续的字母。即,找出不包含aaabbb的最长子串长度。注意SS是其本身的子串。

样例

样例1

输入: "baaabbabbb"
输出: 7
说明: "aabbabb"是最长符合条件的子串

样例2

输入: "babba"
输出: 5
说明:整个S符合条件

样例3

输入: "abaaaa"
输出: 4
说明: "abaa"是最长符合条件的子串

注意事项

  • NN 的取值范围是[1,200,000][1,200000];
  • 字符串SS只包含字符 a 和/或 b.
class Solution:
    """
    @param s: the string
    @return: length of longest semi alternating substring
    """
    ‘‘‘
    大致思路:
    1.初始化c=0,res=[],循环,如果是a的话,开始计数,初始化p,拼接,一直到c>=3的时候,此时截取字符串,append到res里面,p重置,最后返回最长即可。
    ‘‘‘
    def longestSemiAlternatingSubstring(self, s):
        if s == ‘‘:
            return 0
        c = 1
        res = []
        s = s +  
        p = s[0]
        for i in range(1,len(s)):
            if s[i] != s[i-1]:
                if c >= 3:
                    j = c - 2
                    res.append(len(p[:-j]))       
                    p = s[i-1]*2
                elif s[i] ==  :
                    res.append(len(p))
                c = 1  
            else:
                c += 1 
            p += s[i]
        return max(res)

 

以上是关于1819. 最长双交替子串(回顾)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 无重复字符的最长子串 (双指针)

LeetCode 无重复字符的最长子串 (双指针)

LeetCode 003. 无重复字符的最长子串 双指针

算法快速排序

算法归并排序

算法双指针算法 ( 有效回文串 II )