题解 | #最长回文子串#

最长回文子串

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

判断回文,首先要理解什么是回文,会稳定定义是什么,详解里面说的很清楚。

# -*- coding:utf-8 -*-

class Solution:
    def getLongestPalindrome(self, A, n):
#         print([False] * n)
        # write code here
        if n < 2:return len(A)
        maxlen = 1
        dp = [[False] * n for _ in range(n)] //定义n*n矩阵,这里有大坑
        for i in range(n):
            dp[i][i] = True

        for right in range(n):
            for left in range(right):
                if A[left] != A[right]://如果两种字符不相等,肯定不是回文
                    continue

                if right == left://默认相等的情况
                    dp[left][right] = True
                elif right - left <= 2://类似aa这种也是回文子串
                    dp[left][right] = True
                else:
                    dp[left][right] = dp[left + 1][right - 1]//判断是否是回文子串

                if dp[left][right] and right - left + 1 > maxlen://计算最大回文的长度
                        maxlen = right - left + 1
        return maxlen
全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
10-17 17:14
门头沟学院 C++
牛客410039819号:北京地区大多是919和927,这两场挂太多人了
投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务