zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Step By Step(C++模板类)
    Step By Step(C++模板重载和特化)
    Step By Step(C++模板推演)
    Step By Step(C++模板Policy)
    Step By Step(C++模板参数)
    Step By Step(C++模板解析)
    Step By Step(C++模板Trait)
    Step By Step(C++模板基本技巧)
    离职引发的诸多感触
    Step By Step(C++模板函数)
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12821645.html
Copyright © 2011-2022 走看看