题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

alt

参考B站一位UP主,看了不下十遍了 https://www.bilibili.com/video/BV1d7411U7dw?share_source=copy_web

while True :
    try:
        s = input()
        res = ''
        # 遍历字符赤岸中所有的下标
        for i in range(len(s)):
            start = max(0,i-len(res)-1) # 指向候选字符串1的位置
            #当前位置i下,找到start,使得start到i所形成的字符串比当前res字符串的长度要长1。因为i-len res-1 如果是负数 -1的时候没有意义,要保证其至少是0
            # 候选字符串1,短字符串,头尾都加1
            # 候选字符串2,只有左边边加1
            temp = s[start : i+1]
            # 分两种情况 奇数和偶数
            if temp == temp[::-1]: # 偶数回文字符串正反相同
            # 当字符串1是回文字符串的时候,就不需要判断字符串2,字符串1更长
                res = temp
            else:
            # 当候选字符串不是回文的时候,判断字符串2
                temp = temp[1:]
                if temp == temp[::-1]:
                    res = temp
        print(len(res))
    except:
        break

全部评论

相关推荐

5 4 评论
分享
牛客网
牛客企业服务