【leedcode】0005. 最长回文子串

x33g5p2x  于2021-11-13 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(166)

【leedcode】0005. 最长回文子串

给定一个字符串 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

相关文章

微信公众号

最新文章

更多