所以我知道找到字谜背后的理论,显示在这里。出于我的目的,我需要找到可以从一个单词中找到的 anagrams 的数量排除重复。
允许重复,这相当简单。
aab有以下字谜:
aab
aab
aba
aba
baa
baa
Run Code Online (Sandbox Code Playgroud)
这个数量可以通过计算字母数量的阶乘来找到
factorial := 1
for i := len(word); i > 0; i-- {
factorial = i * factorial
}
// aab -> 6
Run Code Online (Sandbox Code Playgroud)
但是,如果您想排除重复项,您已将潜在的字谜从 6 个减少到 3 个。一个例子是单词hello,它有 120 个组合,但只有 60 个没有重复项。
我编写了自己的算法来制作字母映射并返回映射的长度,但这也有问题。
hello -> 24 (actually 60)
helllo -> 24 (actually 120)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?