如何解决如何获得字符串的组合元音或辅音?
给定指数的可能组合数
例如单词 BANANA
的索引 [0]
应该给我:
{'B','BA','BAN','BANA','BANAN','BANANA'}
word='BANANA'
indices=[0,2,4]
def find_combinations(word:str,indices:list):
a=[''.join(l) for i in range(len(word)) for l in combinations(word,i+1)]
b=[x for x in a if x.startswith('B')]
return b
输出:
set(b)
{'B','BAA','BAAA','BAAN','BAANA','BANAA','BANANA','BANN','BANNA','BN','BNA','BNAA','BNAN','BNANA','BNN','BNNA'}
期望输出:
{'B','BANANA'}
解决方法
您不需要组合,您可以使用 slices 和 range
轻松生成从特定索引开始的前缀。
from typing import List
def get_parts(word: str,start: int) -> List[str]:
return [word[start:i] for i in range(start + 1,len(word) + 1)]
(显然,如果您需要将其更改为 return { ... }
,您可以将其更改为 set
。
>>> get_parts("BANANA",0)
['B','BA','BAN','BANA','BANAN','BANANA']
>>> get_parts("BANANA",2)
['N','NA','NAN','NANA']
>>> get_parts("BANANA",4)
['N','NA']
,
您可以根据给定单词的索引,向前创建组合。
word = "BANANA"
indice = [0,2,4]
def find_comb(word:str,indice:list):
final = []
for i in indice:
local = []
new = ""
for j in word[i:]:
new = new + j
local.append(new)
final.append(local)
return final
print(*find_comb(word,indice),sep='\n')
这将为您提供列表列表作为组合索引。
输出:
['B','BANANA']
['N','NANA']
['N','NA']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。