假设我们有一个数组:
你是外星人,他们是人类
那么,如何计算字符串的种类?
输出:
you = 1 word
答案 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)
以下是一些想法:
在 array 中存储字符串以及count(使用strcmp)。添加带有count = 1
的新字符串,如果字符串已经存在,则将计数增加1。 (线性搜索)
将字符串存储在 hash table 中(通过制作链接列表解决冲突)并在遇到相同字符串时递增计数。
保留 trie 并将计数增加为叶节点
按照链接获取时间/空间复杂性和实施细节,以便对哪种数据结构最适合您的要求做出明智的决定。我不敢添加各自的优点和缺点可能会使这篇文章非常广泛。