以下是我想出的用于查找给定字符串的字谜的代码,但是当字符串非常大时,我发现这非常慢。我能做些什么来加快速度吗?还有另一种算法可以使这种操作快速进行吗?
def combinate(stri, comb,n,li):
if stri == "":
if comb not in li:
li.append(comb)
return
for sdx, s in enumerate(stri):
combinate(stri[0:sdx] + stri[sdx + 1:], comb+s,n)
答案 0 :(得分:0)
对字符串中的字符和可能的字谜中的字符进行排序,并比较排序的版本。
"task": "akst"
"skat": "akst"
请注意,关键字“akst”上的字典条目可能包含字谜列表作为值
答案 1 :(得分:0)
如果你正在寻找"最有效的"在时间复杂度上,采用每个术语并将其字符排序为顺序,然后将它们存储在(多值)地图中。给定一个单词,你想要找到字谜,同样对其字符进行排序,并在地图中查找相应的条目。对于每次查找,这将是O(1),尽管预计算在术语总数中是线性的。
我认为可以肯定地说这是最好的时间复杂度,但您可能希望以不同的方式处理多字词字谜 - 对于更多组合这样做,这可能是不切实际的而不是几句话(预计算会非常大),所以你可能想要一次构造一个单词。