class Solution:
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
a = 1 # a是当前的最大字符长度
b = 1 # b是最大字符长度
c = '' # c是返回的文本
if len(s) == 1:
return s
for i in range(len(s)-1):
for j in range(i + 1, len(s)):
if s[j] == s[i]:
if len(s[i: j + 1]) % 2 == 0:
if len(s) == 2:
return s
elif len(s[i: j + 1]) == 2:
a = 2
if a > b:
b = a
c = s[i: j + 1]
else:
if len(s) == 4:
if s[2] == s[3]:
c = s
else:
for k in range(i + 1, int(len(s[i: j + 1]) / 2 + i)):
if s[k] == s[j + i - k]:
a = len(s[i: j + 1])
else:
a = ''
break
if a != '' and a > b:
b = a
c = s[i: j + 1]
else:
if len(s) == 3:
return s
elif len(s[i: j + 1]) == 3:
a = 3
if a > b:
b = a
c = s[i: j + 1]
else:
if len(s[i: j + 1]) % 2 != 0:
for k in range(i + 1, int((j + i) / 2)):
if s[k] == s[2 * int((j + i) / 2) - k]:
a = len(s[i:j + 1])
else:
a = ''
break
if a != '' and a > b:
b = a
c = s[i: j + 1]
elif i == 0 and j == len(s) - 1 and c == '':
c = s[0]
else:
for k in range(i + 1, int(j / 2) + 1):
if s[k] == s[j - i]:
a = len(s[i: j])
if a > b:
b = a
c = s[i: j + 1]
else:
break
elif i == 0 and j == len(s) - 1 and c == '':
c = s[0]
return c
print(Solution.longestPalindrome(0, 'eeeeeeeee'))
5.最长回文子串(方法1)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 作者:寒小阳 时间:2013年9月。出处:http://blog.csdn.net/han_xiaoyang/ar...
- BAT面试算法进阶(5)- BAT面试算法进阶(5)- 最长回文子串(方法一)BAT面试算法进阶(4)- 无重复字...