我即将开始编写一个程序,该程序将分析文本并以某种形式存储文本中的所有独特单词,以后可以调用。当被调用时,它将给出原始文本中所有出现的单词的位置,并返回周围的单词。
我认为最好的方法是使用hashmap,因为它使用唯一的单词作为键,然后使用int []作为映射值。但我不知道这是否被认为是最佳做法。我的解决方案将有一个数组来存储原始文本,这可能非常大,并且每个唯一字一个键值对的一个哈希映射可能几乎与包含文本的数组一样大。你会如何解决它?
答案 0 :(得分:1)
另一种可能性是26-ary树(考虑到你的字母表有26个字符)
构建存储您遇到的单词的树,每个节点将代表一个单词;然后在每个节点中,您可以存储一个指针数组,指向字符串中出现的单词(或表示索引的int数组)。
在内存和复杂性方面,它相当于哈希映射实现(速度相同,稍微更紧凑),但对于我来说,它似乎比哈希映射更直观。
所以我说这主要取决于你和你最喜欢的结构。
答案 1 :(得分:1)
为这种任务制作哈希映射。 您应该将字符串映射到结构(而不是int数组)。 这种结构可能会记录位置以及上一个和下一个词 - 你不清楚“周围”是什么意思。
您可能需要决定您的流程是否区分大小写。 “你”和“你”是同一个词吗?根据语言的不同,您可以提供不区分大小写的比较器和散列函数,或者需要“小写”所有条目。