[LeetCode] 5. 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

def longestPalindrome(s):
    # 特判
    size = len(s)
    if size < 2:
        return s

    max_len = 1
    res = s[0]

    # 枚举所有长度大于等于 2 的子串
    for i in range(size - 1):
        for j in range(i + 1, size):
            if j - i + 1 > max_len and __valid(s, i, j):
                max_len = j - i + 1
                res = s[i:j + 1]
    return res

def __valid(s, left, right):
    # 验证子串 s[left, right] 是否为回文串
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True
posted @ 2020-05-21 14:11  翊仰  阅读(94)  评论(0编辑  收藏  举报