题解 | #最长回文子串#

最长回文子串

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

while True:
    try:
        s = input()
        n = len(s)
        if n < 2:
            print(n)
        else:
            dp = [[False] * n for _ in range(n)]
            for i in range(n):
                dp[i][i] = True
            Max = 1
            for l in range(2, n+1):
                for i in range(n):
                    j = i + l - 1
                    if j >= n:
                        break
                    if s[i] != s[j]:
                        dp[i][j] = False
                    else:
                        if j - i < 3:
                            dp[i][j] = True
                        else:
                            dp[i][j] = dp[i+1][j-1]
                    if dp[i][j] and j + 1 - i > Max:
                        Max = j + 1 - i
            print(Max)
    except:
        break
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务