给定一个字符串,输出所有长度至少为2的回文子串。
回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。
输入
一个字符串,由字母或数字组成。长度500以内。
输出
输出所有的回文子串,每个子串一行。
子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。
样例输入
123321125775165561
样例输出
33 11 77 55 2332 2112 5775 6556 123321 165561
正确高效解法:
s = input()
for i in range(2,len(s)+1):
for j in range(0,len(s)+1-i):
t = s[j:j+i]
if t == t[::-1]:
print(t)
find或者index函数都会出错而且还有越界风险!
s=input()
t=set([])
for i in range(len(s)-1):
if s[i]==s[i+1]:
t.add(s[i]+s[i+1])
for i in t:
if s.find(i)-1>=0 and s.rfind(i)+1<=len(s):
if s[s.find(i)-1]==s[s.rfind(i)+1]:
t.add(s[s.find(i)-1]+i+s[s.rfind(i)+1])
for i in t:
print(i)