题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
# 从右到左,对每个字符进行遍历处理,并且每个字符要处理两次,因为回文子串有两种情况: # ABA型:只需要从当前字符向两边扩散,比较左右字符是否相等,找出以当前字符为中心的最长回文子串长度 # ABBA型:只需要从当前字符和下一个字符向两边扩散,比较左右字符是否相等,找出以当前字符和下一个字符为中心的最长回文子串长度 # 最后比对两种类型的长度,取自较长的长度 out=0 s=input() n=len(s) for i in range(0,n): len_ABA=1 k=i-1 j=i+1 while k>=0 and j<n: if (s[k]==s[j])==True: k-=1 j+=1 len_ABA+=2 else: break len_ABBA=0 k=i j=i+1 while k>=0 and j<=n-1: if (s[k]==s[j])==True: k-=1 j+=1 len_ABBA+=2 else: break # print(i,len_ABA,len_ABBA) new_lone=max(len_ABA,len_ABBA) if new_lone>out: out=new_lone print(out)