美文网首页
HJ85 最长回文子串

HJ85 最长回文子串

作者: Ribosome_He | 来源:发表于2021-10-03 09:30 被阅读0次

    描述
    给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。
    所谓回文串,指左右对称的字符串。
    所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串
    (注意:记得加上while处理多个测试用例)

    输入描述:
    输入一个仅包含小写字母的字符串

    输出描述:
    返回最长回文子串的长度

    #暴力解法
    '''
    while True:
        try :
            l = input()
            result= 0 #存放最大长度
            for i in range(len(l)): #从第一个字符开始遍历
                maxL = result + 1 #存放最大长度+1
                while i + maxL < len(l):
                    if l[i:i+maxL] == l[i:i+maxL][::-1]:
                        result = maxL #存放新的最大长度
                    maxL += 1
            print(result)
        except:
            break
    '''
    
    while True:
        try:
            s = input()
            result = "" #存放回文子串
            for i in range(len(s)): #遍历
                start = max(0, i-len(result)-1) #精髓在此,下标减去回文串的长度-1,即是下一个判断的回文串的开头
                temp = s[start: i+1] #回文串去掉头尾也是回文,所以加上头尾,判断是否是回文
                if temp == temp[::-1]: #有偶数长度和奇数长度的回文,所以判断[0:i]和[1:i],直到有两个字符相同才开始有回文
                    result = temp
                else:
                    temp = temp[1:]
                    if temp == temp[::-1]:
                        result = temp
            if result:
                print(len(result))
        except:
            break
    

    相关文章

      网友评论

          本文标题:HJ85 最长回文子串

          本文链接:https://www.haomeiwen.com/subject/zbyvnltx.html