5. 最长回文子串(longestPalindrome)

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

    1 <= s.length <= 1000
    s 仅由数字和英文字母组成

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

 

题解:

执行用时:1644 ms, 在所有 Python 提交中击败了53.38% 的用户
内存消耗:12.9 MB, 在所有 Python 提交中击败了92.31% 的用户
通过测试用例:180 / 180
查看代码

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        res = ""
        si = 0
        while si < len(s):
            isi = int(si)
            ss, i, j = "", -1, -1
            if(isi < si):
                ss = ""
                i = int(si - 0.5)
                j = int(si + 0.5)
            else:
                ss = s[isi]
                i = isi - 1
                j = isi + 1
            while True:
                if i < 0 or j > len(s) - 1:
                    break
                if s[i] == s[j]:
                    ss = s[i] + ss + s[j]
                    i -= 1
                    j += 1
                else:
                    break
            res = res if len(res) > len(ss) else ss
            si += 0.5
        return res
posted @ 2022-07-11 18:08  tros  阅读(36)  评论(0)    收藏  举报