python-回文字符串查找
题目描述:回文字符串查找
给定一个字符串,输出所有长度至少为2的回文子串。回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。
输入格式
一个字符串,由字母或数字组成。长度500以内
输出格式
输出所有的回文子串,每个子串一行
子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出
输入样例
123321125775165561
输出样例
33
11
77
55
2332
2112
5775
6556
123321
165561
思路:
看题目我们需要将全部的回文数搜索一遍,然后比较他们的长度和出现位置再决定先输出哪一个回文数
我的选择是从0开始,以一定长度对数组切片,长度为2-n,每切到头都回到0
这样以较小切片长度对数组遍历切片后,正好满足条件的回文数输出时正好满足我们的需求(子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出)
代码如下:
str = input()
n = len(str)
for i in range(2, n + 1):
start = 0 # 特定长度从0开始遍历
end = i # 特定长度开始为2,每次循环结束后+1
for j in range(n): # 限制结束位置
if end <= n:
st = str[start:end]
if st[::-1] == st: # 反转切片数组,判断是否为回文数
print(st)
start += 1 #长度不变,位次后移
end += 1
自我总结:

浙公网安备 33010602011771号