题解 | 最长回文子串

最长回文子串

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

s = input()
n = len(s)
max_len = 0

for i in range(n):    # 使用中心扩展法
    left = i    # 情况一:回文字符串为'aba', 'abcba'等长度为奇数的情况
    right = i    # 此时的中心是同一个字符
    length = 0
    while left >= 0 and right < n and s[left] == s[right]:    # 循环找到最大回文字符串
        length = right - left + 1
        left -= 1    # 左边-1
        right += 1    # 右边+1
        max_len = max(length, max_len)
    left = i    # 情况二:回文字符串为'abba', 'abccba'等长度为偶数的情况
    right = i + 1    # 此时的中心为相邻的两个字符
    length = 0
    while left >= 0 and right < n and s[left] == s[right]:
        length = right - left + 1
        left -= 1
        right += 1
        max_len = max(length, max_len)

print(max_len)

全部评论

相关推荐

Cl_Wg:看牛客匿名贴容易抑郁,白菜就是我的天花板
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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