首页 > 其他 > 详细

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

时间:2015-09-15 00:00:12      阅读:277      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!