leetcode上面第5题求最长回文串的题目
两种方法:
第一种方法从中心点向两边的扫描
第二种方法暴力穷举,会超时
一、
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
maxlen = -1
output = s[0]
for mid in range(1,len(s)):
length=0
for i in range(1,mid+1):
if mid-i>=0 and mid+i<len(s):
if s[mid+i] == s[mid-i]:
length+=1
else:
break
if length>=maxlen:
maxlen=length
output=s[mid-length:mid+length+1]
length=0
for i in range(1,mid+1):
if mid-i>=0 and mid+i-1<len(s):
if s[mid+i-1] == s[mid-i]:
length+=1
else:
break
if length>maxlen:
maxlen=length
output=s[mid-length:mid+length]
return output
二、
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
maxlen=0
output=s[0]
flag=1
for start in range(len(s)-1):
for end in range(len(s)-1,0,-1):
flag=1
for i in range((end-start+1)//2):
if s[start+i]!=s[end-i]:
flag=0
break
if flag==1:
length = end-start
if length>maxlen:
maxlen=length
output=s[start:end+1]
return output