如何计算c中单词的频率

时间:2015-05-29 04:36:54

标签: c algorithm data-structures

假设我们有一个数组:

  

你是外星人,他们是人类

那么,如何计算字符串的种类?

输出:

you = 1 word

2 个答案:

答案 0 :(得分:2)

假设你已经正确地完成了标记化,你可以将每个单词存储到char *的向量中,并使用strcmp将你的标记(这是一个char *)与向量中的每个单词进行比较。

前。)

 token_vector.push_back(token);
 for(auto i = 0; i < token_vector.size(); i++){
    if(strcmp(token, token_vector[i]) == 0) count++;
    else token_vector.push_back(token);
 }

答案 1 :(得分:2)

以下是一些想法:

  1. array 中存储字符串以及count(使用strcmp)。添加带有count = 1的新字符串,如果字符串已经存在,则将计数增加1。 (线性搜索)

  2. 将字符串存储在 hash table 中(通过制作链接列表解决冲突)并在遇到相同字符串时递增计数。

  3. 保留 trie 并将计数增加为叶节点

  4. 将字符串存储在 BST (例如 RB tree )中,如果字符串已经存在,则递增计数。< / p>

  5. 按照链接获取时间/空间复杂性和实施细节,以便对哪种数据结构最适合您的要求做出明智的决定。我不敢添加各自的优点和缺点可能会使这篇文章非常广泛。