200. 最长回文子串
给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。
样例
给出字符串 "abcdzdcab"
,它的最长回文子串为 "cdzdc"
。
挑战
O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。
解题思路:
class Solution:
"""
@param s: input string
@return: the longest palindromic substring
"""
def longestPalindrome(self, s):
# write your code here
pali_list = []
#第一个循环,子串的长度
for i in range(1, len(s)+1):
#第二个循环,从字符串中截取子串
for j in range(len(s) - i + 1):
if s[j:j+i] == s[j:j+i][::-1]:
pali_list = []
pali_list.append(s[j:j+i])
return pali_list[0]
'''
def longestPalindrome(self, s):
# write your code here
if len(s) == 0:
return 0
maxLen = 1
start = 0
for i in range(len(s)):
if i - maxLen >= 1 and s[i - maxLen - 1:i + 1] == s[i - maxLen - 1:i + 1][::-1]:
start = i - maxLen - 1
maxLen += 2
continue
if i - maxLen >= 0 and s[i - maxLen:i + 1] == s[i - maxLen:i + 1][::-1]:
start = i - maxLen
maxLen += 1
return s[start:start + maxLen]
'''