class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
if len(set(s)) == 1:
return s
palind = []
for i in range(len(s)):
left_index = i
j = left_index + 1
while s[i] in s[j:]:
right_index = s[j:].index(s[i]) + j
# print(s[i],j,s[j:],left_index,right_index)
middle = (left_index + right_index) / 2
if (left_index + right_index) % 2 == 1:
if s[left_index:middle+1] == s[middle+1:right_index+1][::-1]:
palind.append(s[left_index:right_index+1])
else:
if s[left_index:middle+1] == s[middle:right_index+1][::-1]:
palind.append(s[left_index:right_index+1])
j = right_index + 1
palind_len = 0
result = s[0]
# print(palind)
for a in palind:
if len(a) > palind_len:
result = a
palind_len = len(a)
return result
优化内存消耗:
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
if len(set(s)) == 1:
return s
palind = s[0]
palind_len = 0
for i in range(len(s)):
left_index = i
j = left_index + 1
while s[i] in s[j:]:
right_index = s[j:].index(s[i]) + j
sub_s = s[left_index:right_index+1][:]
if sub_s == sub_s[::-1]:
if len(sub_s) > len(palind):
palind = sub_s[:]
j = right_index + 1
return palind