expand_around_center
函数用于查找以给定左右边界为中心的回文子串。- 在
longestPalindrome
函数中遍历字符串,以每个字符为中心向两边扩展,同时处理奇数和偶数长度的情况,找到最长的回文子串。 - 这种方法的时间复杂度是 O(n^2)。
def longestPalindrome(s:str)->str:
"求最长回文子串"
def expend_around_center(left,right):
"中心扩展法"
while left>=0 and right<len(s) and s[left]==s[right]:
left-=1
right+=1
return s[left+1:right]
n=len(s)
if n<2:
return s
max_palidrome=""
for i in range(n):
palidrome1=expend_around_center(i,i)
if len(max_palidrome)<len(palidrome1):
max_palidrome=palidrome1
palidrome2=expend_around_center(i,i+1)
if len(max_palidrome)<len(palidrome2):
max_palidrome=palidrome2
return max_palidrome
def main():
s="babad"
res=longestPalindrome(s)
print(res)
if __name__=="__main__":
main()