Arrays 最好的(实践)方法是什么来存储文本中单词出现和位置的数据,以便它';什么地方很容易到达?

Arrays 最好的(实践)方法是什么来存储文本中单词出现和位置的数据,以便它';什么地方很容易到达?,arrays,algorithm,performance,sorting,hashmap,Arrays,Algorithm,Performance,Sorting,Hashmap,我即将开始编写一个程序,它将分析文本,并以某种形式存储文本中所有独特的单词,以便以后调用。调用时,它将给出该词在原文中出现的所有位置,并返回周围的词 我认为最好的方法是使用hashmap,因为它使用唯一的单词作为键,然后使用int[]作为映射值。但我不知道这是否是最佳实践。我的解决方案将有一个数组来存储原始文本,它可能相当大,还有一个hashmap,每个唯一的单词有一个键值对,它可能几乎与包含文本的数组一样大。您将如何解决它?另一种可能性是26元树(考虑到您的字母表有26个字符)。 建立你的树存

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


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

另一种可能性是26元树(考虑到您的字母表有26个字符)。
建立你的树存储你遇到的单词,每个节点将代表一个单词;然后在每个节点中,可以存储指向字符串中出现的单词的指针数组(或表示索引的int数组)。
就内存和复杂性而言,它相当于哈希映射实现(同样的速度,稍微更紧凑),但对我来说,它似乎比哈希映射更直观。

所以我认为这主要取决于你和你最喜欢的结构。

另一种可能性是26元树(考虑到你的字母表有26个字符)。
建立你的树存储你遇到的单词,每个节点将代表一个单词;然后在每个节点中,可以存储指向字符串中出现的单词的指针数组(或表示索引的int数组)。
就内存和复杂性而言,它相当于哈希映射实现(同样的速度,稍微更紧凑),但对我来说,它似乎比哈希映射更直观。

所以我想说,这主要取决于您和您最喜欢的结构。

哈希映射是为此类任务而设计的。 您可能应该将字符串映射到结构(而不是int数组)。 这个结构可能会记录位置和上下一个单词——还不清楚“周围”是什么意思


您可能必须决定您的流程是否区分大小写。“你”和“你”是同一个词吗?根据语言的不同,您可能能够提供不区分大小写的比较器和哈希函数,或者需要“小写”所有条目。

为此类任务制作了哈希映射。 您可能应该将字符串映射到结构(而不是int数组)。 这个结构可能会记录位置和上下一个单词——还不清楚“周围”是什么意思


您可能必须决定您的流程是否区分大小写。“你”和“你”是同一个词吗?根据语言的不同,您可能能够提供不区分大小写的比较器和哈希函数,或者需要“小写”所有条目。

它将不区分大小写,因此我可能会在开始时将所有内容都小写,或者正如您所说的,使用不区分大小写的比较器……它将不区分大小写,因此我可能会开头的所有字母都是小写的,或者如您所说,使用不区分大小写的比较器…也被称为
Trie
definitily,yes:)也被称为
Trie
definitily,yes:)