在一行上输入一个长度为
、仅由小写字母构成的字符串
。
输出一个整数,表示字符串
的最长回文子串的长度。
cdabbacc
4
在这个样例中,
是最长的回文子串。
a
1
text=input().strip() l=len(text) f=[[0 for i in text] for j in text] for k in range(l-1,2*l-2+1): for j in range(l): i=j+l-1-k if i<0: continue if i==j: f[i][j]=1 elif abs(i-j)==1: f[i][j]=2 if text[i]==text[j] else 0 else: f[i][j]=f[i+1][j-1]+2 if f[i+1][j-1]>0 and text[i]==text[j] else 0 print(max([max(i) for i in f]))
s = input() lenth = 0 for i in range(2,len(s)+1): #根据定义回文子串最小长度2,最大长度取字符串本身 for j in range(len(s)-i+1): #初始下标最大取值:len(s)-i+1 res = s[j:j+i] #以i为窗口长度滑移 if res == res[::-1]: lenth = i print(lenth)
s = input() n = 0 s_len = 0 for i in range(len(s) - 1): if len(s) % 2 == 0 : if s[i] == s[i + 1]: j = 1 n += 2 while i - j >= 0 and i + j < len(s) - 1: if s[i - j] == s[i + 1 + j]: n += 2 j += 1 else: break elif i+2 <= len(s)-1: if s[i] == s[i + 2]: j = 1 n += 3 while i - j >= 0 and i + j < len(s) - 2: if s[i - j] == s[i + 2 + j]: n += 2 j += 1 else: break if s_len < n: s_len = n n = 0 print(s_len)
#时间压迫下能很快想到的思维不用转弯的但很笨的方法 s=str(input()) l=[] for i in range(len(s)): for j in range(len(s)): l.append(s[i:j+1]) x=[m for m in l if m is not ''] l2=[] for n in x: if n==n[::-1] and len(n)>1: l2.append(n) l3=[] for t in l2: l3.append(len(t)) print(max(l3))
while True: try: s = input() res = [] #所有回文串的长度 组成的列表 for i in range(len(s)): # s的前指针i for j in range(i, len(s)): #s的后指针j,以i为起点 if s[i:j+1] == s[i:j+1][::-1]: # 是回文串, #注意这里是 a[i:j+1] #因为a[i:j]不包含a[j] res.append(len(s[i:j+1])) #将长度加入到 列表 if res != '': #[1, 1, 1, 4, 1, 2, 1, 1, 1, 2, 1] print(max(res)) #4 #print(res) except: break ### #题目逻辑类似 65 75 85 ,两个指针,两次遍历,前后指针