【发布时间】:2021-08-12 22:51:44
【问题描述】:
我有这个问题,你必须找到所有长度为三个的回文并打印出有多少。
例如:
aabca
输出:
3
aba
aaa
aca
我已经知道如何使用我在下面的网络上找到的代码来获取数量:
res = 0
unq_str = set(s)
for ch in unq_str:
st = s.find(ch)
ed = s.rfind(ch)
if st<ed:
res+=len(set(s[st+1:ed]))
return res
但这仅适用于数字
所以我尝试了迭代它并获取列表的概念 长度为三并检查它是否是回文
for x in range(len(input1)):
if not x < 3:
Str1 = input1[x-3:x]
但后来我停止了,因为它不适合任何类型的组合
有什么办法吗?
谢谢
【问题讨论】:
-
您的代码只查找连续的子字符串。您的示例输出有
aaa,它不是连续的。 -
@Barmar 那么,我该怎么办?
-
遍历字符串以获取回文的第一个字符。然后检查字符串后面是否有匹配的字符。然后,您可以从这 2 个字符和它们之间的每个字符组成一个回文。
标签: python palindrome