思路:
典型的最长回文子串的问题,两层for循环暴力枚举所有的子串然后检查子串是否为回文串即可,存储下最大长度。
但是你会发现下面这个代码过不了
#典型的最长回文子串的问题 s=input() max=0 for i in range(len(s)): for j in range(i+1,len(s)+1): if s[i:j]==s[i:j][::-1] and j-i>max: max=j-i print(max)我测试的时候会有三个数据TLE
后来去看了下题解,发现第一个就跟我的思路是一样的,只是多了一个条件:s[i]==s[j-1]
加上之后,就能过了。
猜测是因为切片操作比较费时间,加了一个条件,会少做一些切片操作。
代码:
代码:
#典型的最长回文子串的问题 s=input() max=0 for i in range(len(s)): for j in range(i+1,len(s)+1): if s[i]==s[j-1] and s[i:j]==s[i:j][::-1] and j-i>max: max=j-i print(max)