Python 如何优化我的字谜搜索功能?
我正在处理来自HackerRank的一个问题-我有一个有效的字谜搜索功能,但是,当涉及到大型输入数组/字符串时,它太慢了Python 如何优化我的字谜搜索功能?,python,optimization,anagram,Python,Optimization,Anagram,我正在处理来自HackerRank的一个问题-我有一个有效的字谜搜索功能,但是,当涉及到大型输入数组/字符串时,它太慢了 dictionary和query输入都是单词列表,函数应在query中查找每个单词的字谜数量,并返回对应于每个单词的字谜计数列表 dictionary = ["abc", "bca"] query = ["abc", "xyz"] # return [2, 0] 我尝试了两种方法来减少运行时间
dictionary
和query
输入都是单词列表,函数应在query
中查找每个单词的字谜数量,并返回对应于每个单词的字谜计数列表
dictionary = ["abc", "bca"]
query = ["abc", "xyz"]
# return [2, 0]
我尝试了两种方法来减少运行时间,但没有成功(对于隐藏测试,允许的最大时间限制是10秒)-
有人能指出瓶颈在哪里吗?不是创建特定长度字符串的排列,然后比较是否存在匹配,而是有一个简单的观察,也就是说,如果两个字符串都是字谜,那么两个字符串中的任何字符的数量都是相同的。您实际上从未给出过关于
stringAnagram
应该做什么的明确问题陈述,一些示例输入和输出会有所帮助。将来,更适合这样做,因为您的代码已经在工作了。当然,您会希望重新设置问题的格式以符合该网站的规则。@CoryKramer抱歉,我忘了添加它,我添加了一个解释和一个示例nowcollections。Counter是您的朋友。这就是我写这篇文章时使用的方法,它只会返回字典中有字谜的单词列表——是否可以为字典中的每个单词添加多少字谜的计数?
def stringAnagram(dictionary, query):
sorted_dictionary = {''.join(sorted(word)) for word in words}
result = [word for word in query if ''.join(sorted(word)) in sorted_dictionary]
return result
def stringAnagram(dictionary, query):
sorted_dictionary = {''.join(sorted(word)) for word in words}
result = [word for word in query if ''.join(sorted(word)) in sorted_dictionary]
return result