【问题标题】:hash table index design哈希表索引设计
【发布时间】:2017-03-26 17:56:33
【问题描述】:

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

【问题讨论】:

标签: algorithm hash anagram


【解决方案1】:

所以你想用你的哈希表回答的问题是:我有哪些字母可以组成什么词?

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

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

所以在 Java 中你可以像这样得到密钥:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2013-09-17
    • 2012-01-03
    相关资源
    最近更新 更多