给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
方法一:
def PalindromeMax(s):
Max,res = 0,''
for i in range(len(s)):
for j in range(i,len(s)):
t = s[i:j+1]
if t==t[::-1] and Max<j-i+1:
Max,res = j-i+1,t
return res
'''
>>> a,b = 'babad','cbbd'
>>>
>>> PalindromeMax(a)
'bab'
>>> PalindromeMax(b)
'bb'
>>>
'''
方法二: lambda表达式
Max = lambda s: max([(len(s[i:j]),s[i:j]) for i in range(len(s)) for j in range(i+1,len(s)+1) if s[i:j]==s[i:j][::-1]])[1]
'''
>>> a='babad'
>>> Max(a)
'bab'
>>>
>>> b='cbbd'
>>> Max(b)
'bb'
>>>
'''
方法三:中心扩散法
def PalindromeMax(s):
Max,res = 0,''
for i in range(len(s)):
for j in range(2):
L,R = i,i+j
while L>=0 and R<len(s) and s[L]==s[R]:
if Max<R-L+1:
Max,res = R-L+1,s[L:R+1]
L -= 1
R += 1
return res
'''
>>> a,b = 'babad','cbbd','I am HannYang'
>>> PalindromeMax(a)
'bab'
>>> PalindromeMax(b)
'bb'
>>> PalindromeMax(c)
'nn'
>>>
'''
欢迎加入“派森特给站”社区!
https://bbs.csdn.net/forums/PythonTogether
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/boysoft2002/article/details/121254065
内容来源于网络,如有侵权,请联系作者删除!