2 weixin 34250340 weixin_34250340 于 2016.03.18 13:04 提问

怎么统计string字符串中出现频率最高的三个字符,包括汉字大小写字母
c++

int main
stiring str;
cin>>str;
cout<<“出现频率最高的三个字符是”
cout<<
cout<<“出现频率分别为”
cout<<

4个回答

caozhy
caozhy   Ds   Rxr 2016.03.18 15:17

helloworld
l 3
o 2
d 1
Press any key to continue

caozhy
caozhy   Ds   Rxr 2016.03.18 15:17

#include <map>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

typedef pair<int, int> PAIR;

int cmp(const PAIR &x, const PAIR &y)  
{  
    return x.second > y.second;  
}

int main()
{
    map<int, int> _map;
    string s;
    cin >> s;
    int n = s.length();
    int i;
    for (i = 0; i < n; i++)
    {
        _map[s[i]]++;
    }
    vector<PAIR> vec;
    for (map<int, int>::iterator ltr = _map.begin(); ltr != _map.end(); ltr++)
    {
        vec.push_back(make_pair(ltr->first, ltr->second));
    }
    sort(vec.begin(), vec.end(), cmp);
    vector<PAIR>::iterator curr = vec.begin();
    for (i = 0; i < 3 && curr != vec.end(); i++, curr++)  
    {  
        cout << (char)curr->first << "\t" << curr->second << endl;  
    }
    return 0;
}
enpterexpress
enpterexpress   2016.03.18 13:20

对啊,遍历字符串啊,遇到重复的加一

FlushHip
FlushHip   2016.03.18 13:12

这个可以先把String中的字符按字典序排序。然后就是用序列判重的方法就可以得出了。

weixin_34250340
weixin_34250340 可以遍历吗
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片