题解 | 最长回文子串

最长回文子串

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版本

全部评论

相关推荐

赛博小保安:你这简历没啥大问题的,经历技能也足够了,问题应该就是出在出身了,学院本就是这样,HR忙着跟92的勾搭呢,哪有心思看我们这些双非😿😭
点赞 评论 收藏
分享
09-19 12:15
门头沟学院 Java
迷茫的大四🐶:这下是真的打牌了,我可以用感谢信和佬一起打牌吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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