描述
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
示例1
输入:
"abc1234321ab",12
返回值:7
牛客:
方案一
1、向两边扩散计算
思路:奇偶数分别计算
时间复杂度O(n2)
空间复杂度O(n)
# -*- coding:utf-8 -*-
class Solution:
def getLongestPalindrome(self, A, n):
# write code here
def helper(A, left, right, n):
while(left>=0 and right<n and A[left]==A[right]):
left -= 1
right += 1
return right-left-1
max_len = 0
for i in range(n-2,0,-1):
len_1 = helper(A, i-1, i+1, n) # 奇
len_2 = helper(A,i,i+1,n) # 偶
max_len = max(len_1, len_2, max_len)
if A[0]==A[1] and max_len<2:
max_len=2
return max_len