哈希表索引设计

时间:2016-11-12 18:01:56

标签: algorithm hash anagram

我想使用哈希表来存储单词。 例如,我有两个单词aba和aab,因为它们只是按照不同的顺序由相同的元素组成,所以我想用相同的索引存储它们,并在该链接列表中插入一个链接列表。我很容易以某种方式搜索。单词的元素只有26个字母。如何设计哈希表的正确索引?如何整理表格?

1 个答案:

答案 0 :(得分:0)

所以你想用你的哈希表回答的问题是:用我的字母可以构建哪些单词?

我假设您正在阅读一些字典,并希望将所有值都放在哈希表中。然后你可以使用一个int数组来计算每个字母作为键出现的次数(例如' a'将是索引0和' z'索引25)并且你可以使用必须使用列表,以便您可以向该条目添加多个单词。

但最简单的解决方案可能只是将排序后的单词用作关键字(例如,#aba'得到关键' aab' aab' aab&be;显然也是如此),因为单词不是很长,所以排序并不昂贵(避免通过使用字符数组来创建新的字符串)。

所以在Java中你可以得到这样的关键:

char[] key = word.toCharArray();
Arrays.sort(key);
// and if you want a string
String myKey = new String(key);