码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-05-03 14:34:23      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:中文   开始   active   bottom   render   open   param   substring   res   

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. 最长双交替子串(回顾)

标签:中文   开始   active   bottom   render   open   param   substring   res   

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12821645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!