我想使用哈希表来存储单词。例如,我有两个单词aba和aab,因为它们是由相同的元素组成的,只是顺序不同,所以我想用相同的索引存储它们,并在该链接列表中插入一个链接表。对我来说,以某种方式进行搜索很容易。单词的元素只有26个字母。如何设计合适的哈希表索引?如何组织表格?
发布于 2016-11-13 02:43:28
所以你想用你的哈希表回答的问题是:用我拥有的字母可以构建什么单词?
我假设你正在读一些字典,并且想把所有的值放在哈希表中。然后,您可以使用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);https://stackoverflow.com/questions/40565997
复制相似问题