【发布时间】:2012-09-10 17:40:37
【问题描述】:
如果其中一个词与另一个词的字符完全相同,则两个词是字谜。
例如:Anagram & Nagaram 是字谜(不区分大小写)。
现在有很多类似的问题。找出两个字符串是否是字谜的几种方法是:
1) Sort 字符串并比较它们。
2) 为这些字符串创建一个frequency map 并检查它们是否相同。
但是在这种情况下,我们得到了一个单词(为了简单起见,我们假设只有一个单词,并且它只有一个单词字谜),我们需要为此找到字谜。
我想到的解决方案是,我们可以为单词生成所有排列,并检查这些单词中的哪些存在于字典中。但显然,这是非常低效的。是的,词典也有。
那么我们有什么选择呢?
我还在一个类似的帖子中读到,可以使用 Tries 来完成某些事情,但该人没有解释算法是什么以及为什么我们首先使用 Trie,只是提供了一个实现在 Python 或 Ruby 中。所以这并没有真正的帮助,这就是我创建这个新线程的原因。如果有人想分享他们的实现(C、C++ 或 Java 除外),也请解释一下。
【问题讨论】:
-
可以帮助您寻找答案的方法:stackoverflow.com/questions/7896694/… 基本上,您可以做的是使用哈希函数为字谜产生相同的值,然后将您的字典转换为允许获取给定此类哈希的单词列表。
-
你真正想做什么?从给定的一组字母中找出存在于固定字典中的所有字谜?或者在固定字典中的所有单词上建立一个字谜关系,即给定该字典中的一个单词,有效地检索所有有效的字谜?
-
给定一个具有固定单词集的字典和一个随机单词(可能在字典中或不在字典中),找到它的字谜(在字典中存在)。有意义吗?
标签: algorithm data-structures language-agnostic anagram