题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507
参考B站一位UP主,看了不下十遍了 https://www.bilibili.com/video/BV1d7411U7dw?share_source=copy_web
while True :
try:
s = input()
res = ''
# 遍历字符赤岸中所有的下标
for i in range(len(s)):
start = max(0,i-len(res)-1) # 指向候选字符串1的位置
#当前位置i下,找到start,使得start到i所形成的字符串比当前res字符串的长度要长1。因为i-len res-1 如果是负数 -1的时候没有意义,要保证其至少是0
# 候选字符串1,短字符串,头尾都加1
# 候选字符串2,只有左边边加1
temp = s[start : i+1]
# 分两种情况 奇数和偶数
if temp == temp[::-1]: # 偶数回文字符串正反相同
# 当字符串1是回文字符串的时候,就不需要判断字符串2,字符串1更长
res = temp
else:
# 当候选字符串不是回文的时候,判断字符串2
temp = temp[1:]
if temp == temp[::-1]:
res = temp
print(len(res))
except:
break