唯一长度为 3 的回文 python
Unique length-3 palindromes python
我有这个问题,你必须找到所有 长度三个 回文并打印有多少回文。
例如:
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
但这仅适用于 num
所以我尝试了迭代它并获取列表的概念
长度为三并检查它是否是回文
for x in range(len(input1)):
if not x < 3:
Str1 = input1[x-3:x]
但后来我停了下来,因为它不适合任何类型的组合
有什么办法吗?
谢谢
我不是 100% 确定这是正确的,但希望它能让你走上正确的轨道。
import itertools
input = "aabca"
palindromes = set() # use a set to ensure no duplicates
# iterate over all combinates of length 3
for t in itertools.combinations(input, 3):
# is this a palindrome? If so save
if t == tuple(reversed(t)):
palindromes.add(''.join(t))
# output results
print(palindromes)
print(len(palindromes))
可能有一个不生成重复项的 itertools 配方,但我认为它有效。
编辑:使用连接会产生一组字符串而不是字符串字符。
编辑 2:要使其等同于 keithpjolly 的回答:
import itertools
input = "aabca"
palindromes = set() # use a set to ensure no duplicates
# iterate over all combinates of length 3
for a,b,c in itertools.combinations(input, 3):
# is this a palindrome? If so save
if a == c:
palindromes.add(''.join((a,b,c)))
# output results
print(palindromes)
print(len(palindromes))
怎么样:
from itertools import combinations
s = 'aabca'
p = set([''.join([a,b,c]) for a,b,c in combinations(s, 3) if a == c])
print(p)
print(len(p))
输出:
{'aaa', 'aba', 'aca'}
3
编辑 - combinations
比 permutations
好得多。
编辑 - 忘记了 length
.
我有这个问题,你必须找到所有 长度三个 回文并打印有多少回文。
例如:
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
但这仅适用于 num
所以我尝试了迭代它并获取列表的概念 长度为三并检查它是否是回文
for x in range(len(input1)):
if not x < 3:
Str1 = input1[x-3:x]
但后来我停了下来,因为它不适合任何类型的组合
有什么办法吗?
谢谢
我不是 100% 确定这是正确的,但希望它能让你走上正确的轨道。
import itertools
input = "aabca"
palindromes = set() # use a set to ensure no duplicates
# iterate over all combinates of length 3
for t in itertools.combinations(input, 3):
# is this a palindrome? If so save
if t == tuple(reversed(t)):
palindromes.add(''.join(t))
# output results
print(palindromes)
print(len(palindromes))
可能有一个不生成重复项的 itertools 配方,但我认为它有效。
编辑:使用连接会产生一组字符串而不是字符串字符。
编辑 2:要使其等同于 keithpjolly 的回答:
import itertools
input = "aabca"
palindromes = set() # use a set to ensure no duplicates
# iterate over all combinates of length 3
for a,b,c in itertools.combinations(input, 3):
# is this a palindrome? If so save
if a == c:
palindromes.add(''.join((a,b,c)))
# output results
print(palindromes)
print(len(palindromes))
怎么样:
from itertools import combinations
s = 'aabca'
p = set([''.join([a,b,c]) for a,b,c in combinations(s, 3) if a == c])
print(p)
print(len(p))
输出:
{'aaa', 'aba', 'aca'}
3
编辑 - combinations
比 permutations
好得多。
编辑 - 忘记了 length
.