【发布时间】:2022-01-19 18:51:41
【问题描述】:
假设有两个字符串数组。一个数组命名为查询,另一个命名为字典。对于查询的每个字符串元素,您需要找出它在字典元素中存在多少个字谜,并将该数字推送到另一个数组。您的代码必须返回该数组,并且它的大小应该等于查询的大小(如预期的那样)。
我解决这个问题的方法是:
- 遍历查询和字典的每个元素(在嵌套循环中);
- 检查查询元素的长度是否等于字典的嵌套元素。如果是,那么我使用
set(word)==set(st)(st 指的是字典)检查了它们是否具有相同的字符。
我的代码是这样的:
anagrams = list()
for word in query:
ana = 0
for st in dictionary:
if(len(word)==len(st)):
if(set(word)==set(st)):
ana = ana + 1
anagrams.append(ana)
这个逻辑给了我正确的结果,但它没有优化。结果,它超过了 10 秒的时间限制。查询和字典的长度都可以达到 10^15。
我的逻辑在 O(n^2) 时间内运行。有什么办法可以再优化一下代码吗?
【问题讨论】:
标签: python arrays string anagram