字词字谜生成器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字词字谜生成器相关的知识,希望对你有一定的参考价值。
我有一个类似的字符串列表:
beel beez baee beae
并且我需要找到所有单词(如果存在)中相同的单词(或其字谜)。在这种情况下,魔术词是:
蜜蜂
或其字谜(例如:ebe,eeb)
我的解决方法是:
我比较它们之间的所有单词:
def es(list_str):
for i in range(len(list_str)):
a = list_str[i]
for j in range(i+1, len(list_str)):
b = list_str[j]
然后我搜索魔术词:
def generator(a,b):
res = []
a = list(a)
b = list(b)
for i in a:
if i in b:
res.append(i)
b.remove(i)
return sorted(res)
实际上,我的代码可以正常工作,我找到了我所需要的。问题是字符串列表很长,效率不高。
有人对如何找到这个单词有更好的主意吗?我不能使用特殊的图书馆,这是大学的功课。
答案
from collections import Counter
words = [
"beel",
"beez",
"baee",
"beae",
]
letter_counts = [Counter(word) for word in words]
shared_letters = letter: min(counts[letter] for counts in letter_counts) for letter in words[0]
print("".join(letter * count for letter, count in shared_letters.items()))
另一答案
一种方法是使用集合找到所有单词共有的字母,然后计算单词中每个字母出现的最小数量:
words = 'beel beez baee beae'.split()
common_letters = set.intersection(*(set(word) for word in words))
occurences = letter: min(word.count(letter) for word in words) for letter in common_letters
common_word = ''.join([letter * occurences[letter] for letter in common_letters])
print(common_word)
# bee
以上是关于字词字谜生成器的主要内容,如果未能解决你的问题,请参考以下文章