天天看点

Leetcode实战:5.最长回文子串

题目:

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

示例1:

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

示例2:

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

算法实现:

class Solution:
    def longestPalindrome(self, s: str) -> str:
        firststr = ''
        secondstr = ''
        for each in range(len(s) if len(s) < 1000 else 1000):
            m, n = each, each
            while m >= 0 and n <= len(s) - 1 and s[m] == s[n]:
                    if len(firststr) <= n - m + 1: firststr = s[m:n + 1]
                    m -= 1
                    n += 1
            m, n = each, each + 1
            while m >= 0 and n <= len(s) - 1 and s[m] == s[n]:
                    if len(secondstr) <= n - m + 1: secondstr = s[m:n + 1]
                    m -= 1
                    n += 1
        return firststr if len(firststr) > len(secondstr) else secondstr
           

结果:

Leetcode实战:5.最长回文子串