哈希表的应用之1:用哈希法统计大数据词频

问题背景

给出一篇文章,默认已经分好词了(一个单词一行),问如何统计各个单词的词频?

这个问题可以延伸出其他几个问题
1,热搜的关键词是如何出来的,就是给你一堆的大数据量的词,问你如何从中找出词频最高的几个词。
2,给你一堆大数据量的单词列表,问某个单词第一次出现的位置
3,大数据去重,用哈希表存储后的数据就是去重了的

以上几个问题都可以通过哈希表解决,同时也有取代它的方法,那就是字典树

解决问题

我们首先需要解决的问题就是统计词频,统计词频的原理是这样,把单词作为建(因为每个单词都不同,具有唯一性),词频作为键值。这样就可以用C++里面的数据结构map完美的cover掉这个问题。
map

代码

#include 
#include 
#include 
using namespace std;

int main()
{
    map<string,int> mapwords;
    int n;
    cin>>n;
    string word;
    for(int i=0;icin>>word;
        if(mapwords[word]==0){      //看来默认就是0
            mapwords[word] = 1;
            cout<<"first appeared in "<1<<" place"<else{
            mapwords[word]++;
        }
    }
    map<string, int>::iterator iter;
    for(iter = mapwords.begin(); iter != mapwords.end(); iter++)
        cout<first<<' '<second<return 0;
}

测试样例

哈希表的应用之1:用哈希法统计大数据词频_第1张图片

你可能感兴趣的:(C,C++)