HJ85 最长回文子串

2021-10-03  本文已影响0人  Ribosome_He

描述
给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。
所谓回文串,指左右对称的字符串。
所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串
(注意:记得加上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
上一篇 下一篇

猜你喜欢

热点阅读