找到字谜的数量

时间:2013-10-17 07:56:27

标签: algorithm

以下是在其中一次采访中向我询问的问题。 我们知道吃的字谜是:茶和吃 问题是: 我们有一个计划。我们为这个程序提供了一万个字母表。 我们运行该程序。 现在,在运行时,我们为此程序提供了一个词,例如。 “吃” 现在程序应该返回万字母列表中存在的字谜数量。因此,对于“吃”的输入,它应该返回2.

存储这些万字母的策略是什么,以便找到字谜的数量变得容易。

1 个答案:

答案 0 :(得分:1)

订购每个单词的字母以最小化其排序,即tea变为aet

然后只需将这些字词放入(哈希)字词映射中(teaate映射到aet,这样我们就可以(aet, 2)了地图)

然后,当你得到一个单词时,重新排序上面的字母并查找计数。

运行时间:

假设列表中有n个字词,平均字长为m ...

预期O(nm log m)预处理,每个查询预期O(m log m)

m log m假设我们只是简单地写了一个单词的字母。

预计每个查询所花费的时间不受列表中单词数量的影响(即哈希映射会给出预期的O(1)查找时间)。