- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前,此代码从用户处获取一个字符串,并将其与存储许多单词的文本文件进行比较。然后,它输出包含与该字符串完全匹配的所有单词。 (例如“otp = opt,top,pot)当前,当我输入字符串时,它仅将字符串与重新排列顺序中具有完全相同字母的单词进行匹配。
我的问题是如何才能输入多余的字母但仍输出包含的所有单词?例如:输入“orkignwer”,即使有多余的字母,程序也会输出“working”。
words = []
def isAnAnagram(word, user):
wordList= list(word)
wordList.sort()
inputList= list(user)
inputList.sort()
return (wordList == inputList)
def getAnagrams(user):
lister = [word for word in words if len(word) == len(user) ]
for item in lister:
if isAnAnagram(item, user):
yield item
with open('Dictionary.txt', 'r') as f:
allwords = f.readlines()
f.close()
for x in allwords:
x = x.rstrip()
words.append(x)
inp = 1
while inp != "99":
inp = input("enter word:")
result = getAnagrams(inp)
print(list(result))
最佳答案
您必须编辑 isAnAnagram
和 getAnagrams
功能。首先是getAnagrams
应编辑函数以在 lister
中包含更长的单词。列表:
def getAnagrams(user):
lister = [word for word in words if len(word) <= len(user) ]
for item in lister:
if isAnAnagram(item, user):
yield item
然后您需要编辑 isAnAnagram
功能。正如 Alexander Huszagh 指出的,您可以使用 collections
中的计数器。封装:
from collections import Counter
def isAnAnagram(word, user):
word_counter = Counter(word)
input_counter = Counter(user)
return all(count <= input_counter[key] for key, count in word_counter.items())
all(count <= input_counter[key] for key, count in word_counter.items())
检查 word
的每个字母是否出现在 user
至少与word
中的次数一样多.
附注如果您想要更优化的解决方案,您可能需要查看 TRIE(例如 MARISA-trie、python-trie 或 PyTrie)。
关于带有字谜的 Python 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880298/
我的程序运行良好,这只是我需要的一个小建议;首先这是我的代码,用于检查两个单词是否是字谜;效果很好; #include int anagram_check(char [], char []); in
面试问题给定两个输入字符串,您只能交换字符串中的两个连续元素。您必须展示将一个字符串转换为另一个字符串的所有步骤(两个字符串将是彼此的字谜)。例如。口香糖到马克杯 古姆百货公司通用汽车大学微量气体发生
我正在尝试学习 Python。考虑这个简单的 C 语言变位词检查器: bool are_anagrams(const char* str1, const char* str2) { int str
(下面关于我的问题的代码) 根据 this stack overflow question我使用 Pegolon 的方法来生成 NSString 中一组字符的所有可能排列。但是,我现在试图让它不仅生成
testing if strings are anagrams有很多种方式.但是,我想知道是否有一种方法可以只对每个单词进行一次迭代?如果不是,在 Python 中最有效的方法是什么? 我们可以遍历第
我是一名优秀的程序员,十分优秀!