题解 | 最长回文子串

最长回文子串

https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param A string字符串 
# @return int整型
#
class Solution:
    def getLongestPalindrome(self , A: str) -> int:
        n = len(A)
        max_len = 1
        def expand(left, right):
            """ 从中心向两侧扩展,返回最长回文子串的长度"""
            while left >= 0 and right < n and A[left] == A[right]:
                left -= 1
                right += 1
            # 退出循环时,有效回文长度为(right-1) - (left+1) + 1
            return right - left - 1
        
        for i in range(n):
            # 以单个字符为中心(奇数长度回文)
            len_odd = expand(i,i)

            # 以两个字符为中心(偶数长度回文)
            len_even = expand(i,i+1)
            current_max = max(len_odd,len_even)
            if current_max > max_len:
                max_len = current_max
        return max_len




python版本

全部评论

相关推荐

10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务