python给定一个字符串,输出所有长度至少为2的回文子串。
时间: 2023-05-21 08:00:57 浏览: 234
python 回文子串,给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。
5星 · 资源好评率100%
可以使用中心扩展算法来解决这个问题。具体步骤如下:
1. 遍历字符串,以每个字符为中心,向两边扩展,找到所有以该字符为中心的回文子串。
2. 遍历字符串,以每两个相邻字符的中心,向两边扩展,找到所有以这两个字符为中心的回文子串。
3. 将步骤1和步骤2找到的所有回文子串合并去重,输出结果。
以下是实现代码:
def find_palindromic_substrings(s):
res = set()
for i in range(len(s)):
# 以单个字符为中心的回文子串
l, r = i, i
while l >= 0 and r < len(s) and s[l] == s[r]:
res.add(s[l:r+1])
l -= 1
r += 1
# 以相邻两个字符为中心的回文子串
l, r = i, i+1
while l >= 0 and r < len(s) and s[l] == s[r]:
res.add(s[l:r+1])
l -= 1
r += 1
return list(res)
s = "abcbadefg"
print(find_palindromic_substrings(s)) # ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'bc', 'cb', 'badab', 'def', 'aba']
阅读全文