题解 | #NC17 最长回文子串#

Python 版本

暴力遍历

class Solution:
    def getLongestPalindrome(self , A: str) -> int:
        for i in range(len(A), 0, -1): # 从大到小控制回文长度
            for j in range(0, len(A)-i+1): # 控制不同长度回文的位置
                if (A[j:j+i] == A[j:j+i][::-1]): # 是否回文
                    return i

辅助扩散

class Solution:
    def fun(self, s: str, begin: int, end: int) -> int:
        #每个中心点开始扩展
        while begin >= 0 and end < len(s) and s[begin] == s[end]: 
            begin -= 1
            end += 1
        #返回长度
        return end - begin - 1 
    def getLongestPalindrome(self , A: str) -> int:
        maxlen = 1
        #以每个点为中心
        for i in range(len(A) - 1): 
            #分奇数长度和偶数长度向两边扩展
            maxlen = max(maxlen, max(self.fun(A, i, i), self.fun(A, i, i + 1)))
        return maxlen
全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务