首页 > 编程语言 > 详细

5. 最长回文子串(动态规划算法)

时间:2019-01-04 16:53:33      阅读:664      评论:0      收藏:0      [点我收藏+]
#动态规划,主要利用如果i+1到j-1是回文字符串且s[i]==s[j]那么i 到 j也是回文字符串
1
class Solution: 2 def longestPalindrome(self, s): 3 """ 4 :type s: str 5 :rtype: str 6 """ 7 n=len(s) 8 aa=[0]*(n*n) 9 longest=‘‘ 10 for i in range(n): 11 aa[i*n+i]=1 #单个字符肯定是回文字符串,用于回文长度为3的判断 12 longest=s[i] 13 for i in range(n-1): 14 if s[i]==s[i+1]: 15 aa[i*n+i+1]=1 #如果两个字符相同,那么它们也构成回文字符串,用于回文长度为4的判断 16 longest=s[i:i+2] 17 for l in range(3,n+1): 18 for i in range(0,n-l+1): 19 e=l+i-1 20 if (aa[(i+1)*n+e-1] & int(s[i]==s[e])): 21 longest=s[i:e+1] 22 aa[i*n+e]=1 23 return longest 24

 

5. 最长回文子串(动态规划算法)

原文:https://www.cnblogs.com/techengin/p/10220651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!