arrays - 什么是最好的(实践)方法来存储有关单词在文本中的出现和位置的数据以便快速访问?

标签 arrays algorithm performance sorting hashmap

我即将开始编写一个程序,该程序将分析文本并以某种形式存储文本中的所有独特单词,以便稍后调用。当被调用时,它将给出该词在原文中所有出现的位置,并返回周围的词。

我认为最好的方法是使用 HashMap ,因为它使用唯一的单词作为键,然后使用 int[] 作为映射值。但我不知道这是否被认为是最佳实践。我的解决方案是用一个数组来存储原始文本,它可能非常大,还有一个 HashMap ,每个唯一单词都有一个键值对,这可能几乎与包含文本的数组一样大。你会如何解决?

最佳答案

另一种可能性是 26 叉树(考虑到您的字母表有 26 个字符)。
构建你的树来存储你遇到的单词,每个节点代表一个单词;然后在每个节点中,您可以存储指向字符串中出现的单词的指针数组(或表示索引的 int 数组)。
在内存和复杂度上,它相当于hash map的实现(同样的速度,稍微更紧凑),但对我来说似乎比hash map更直观一些。
所以我想说这主要取决于您和您最喜欢的结构。

关于arrays - 什么是最好的(实践)方法来存储有关单词在文本中的出现和位置的数据以便快速访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976080/

相关文章:

php - array_unshift() 带有空数组

java - 如何从 "this."指定的方法中提取值

asp.net - 在 asp.net 应用程序中打开/关闭连接的良好做法?

javascript - 测量四个相似 Javascript 函数之间的 CPU 负载差异

c# - 无法反转整数数组

javascript - 为什么在这个 JavaScript 示例中移位比索引访问更快?

c# - 对大 N 应用 Rabin-Karp 哈希

展平 3D 三角形带的算法

Objective-c如何实现类似excel的 "Goal seek"算法?

c - Linux内核例程的时序测量