我的答案加示例代码
我的答案:PS自己执行时没有问题,但是力扣提交会报错,代码的重点在choose_num模块上
class Solution(object):
def longestPalindrome(s):
l = len(s)
if (l < 2):
return s
else:
s_list = list(s)
def listtoste(s):
testlist = s
teststr = "".join(testlist)
return teststr
def del_s_e(s):
l = len(s)
s1 = s[0:l - 1]
s2 = s[1:l]
return s1, s2
def cheaknum (s):
l = len(s)
start = 0
end = (l - 1)
while (start <= (l / 2)):
print('stare',start)
print('end:',end)
if (s_list[start] == s_list[end]):
start += 1
end -= 1
else:return False
return True
def choose_num(s_list):
if (cheaknum(s_list)):
print(listtoste(s_list))
return listtoste(s_list)
if (cheaknum(s_list) == False):
s1, s2 = del_s_e(s_list)
print('s1:',s1)
print('s2:',s2)
s1 = choose_num(s1)
s2 = choose_num(s2)
if len(s1) >= len(s2):
print(listtoste(s1))
return listtoste(s1)
else:
print(listtoste(s2))
return listtoste(s2)
a = choose_num(s_list)
s = "ababc"
a = longestPalindrome(s)
print(',,,,,,,,,,,,,,,,,,,,,,,,,,,')
示例代码:
class Solution:
def longestPalindrome(self, s: str) -> str:
if len(s) < 2 or s == s[::-1]:
return s
res = s[0]
maxlen = 1
for i in range(1, len(s)):
odd = s[i - maxlen - 1: i + 1]
even = s[i - maxlen: i + 1]
if even == even[::-1] and i - maxlen >= 0:
res = even
maxlen += 1
continue
if odd == odd[::-1] and i - maxlen - 1 >= 0:
res = odd
maxlen += 2
continue
return res