码迷,mamicode.com
首页 > 其他好文 > 详细

1000万条有重复的字符串,找出重复数前10的字符串

时间:2015-09-15 00:02:28      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

输入的时候可以使用map来存储,然后将map里的数据转到vector里,按重复数从大到小输出10个即可。

 

#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
using namespace std;

map<string, int> mp;
struct node {
    string s;
    int num;
    node(string s,int num):s(s),num(num){}
};
vector<node> v;

bool cmp(const node&a, const node&b) {
    return a.num > b.num;
}

int main() {
    int n, m;
    string s;
    while (cin >> n) {
        mp.clear();
        for (int i=0; i<n; i++) {
            cin >> s;
            if (mp.find(s) != mp.end()) {
                mp[s] ++;
            } else {
                mp.insert(make_pair(s, 1));
            }
        }

        v.clear();
        map<string,int>::iterator it;
        for (it=mp.begin(); it!=mp.end(); it++) {
            node x(it->first, it->second);
            v.push_back(x);
        }
        sort(v.begin(), v.end(), cmp);
        for (int i=0; i<10; i++) {
            cout << v[i].s << endl;
        }
    }
    return 0;
}

  

1000万条有重复的字符串,找出重复数前10的字符串

标签:

原文地址:http://www.cnblogs.com/marginalman/p/4808888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!