• [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
    
  • 相关阅读:
    括号匹配
    超级阶梯问题
    进制问题
    rwkj 1423
    next_permutation
    rwkj 1420
    uva-10392-因数分解
    uva-10305-水题-拓扑排序
    uva-10194-排序
    uva-10152-乌龟排序
  • 原文地址:https://www.cnblogs.com/wangyiyang/p/12930438.html
Copyright © 2020-2023  润新知