【发布时间】:2021-10-16 06:42:00
【问题描述】:
所以我知道查找字谜背后的理论,如here 所示。出于我的目的,我需要找到可以从一个单词中找到的字谜的数量不包括重复项。
允许重复,这相当简单。
aab 有以下字谜:
aab
aab
aba
aba
baa
baa
这个数量可以通过字母数量计算factorial得到
factorial := 1
for i := len(word); i > 0; i-- {
factorial = i * factorial
}
// aab -> 6
但是,如果您想排除重复,您可以将潜在的字谜从 6 个减少到 3 个。例如单词 hello,它有 120 个组合,但只有 60 个没有重复。
我编写了自己的算法来制作字母映射并返回映射的长度,但这也有问题。
hello -> 24 (actually 60)
helllo -> 24 (actually 120)
我怎样才能做到这一点?
【问题讨论】:
-
相当肯定
hello有 60 个字谜,不包括重复。helo有 24 个,所以hello肯定有更多。
标签: algorithm go duplicates factorial anagram