本文主要是介绍华为机考:HJ102 字符统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
华为机考:HJ102 字符统计
描述
方法1
先将所有字符计算数量,在对比其中字符的assic码
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(pair<char, int> a, pair<char, int> b) {if (a.second > b.second) {return true;} else if (a.second == b.second) {return a.first < b.first;} else {return false;}
}int main() {string s;while (cin >> s) {vector<pair<char, int>> vec;for (int i = 0; i < s.length(); ++i) {vector<pair<char, int>>::iterator it;for (it = vec.begin(); it != vec.end(); ++it) {if (it->first == s[i]) {it->second++;break;}}if (it == vec.end()) {vec.push_back(make_pair(s[i], 1));}}sort(vec.begin(), vec.end(), cmp);for (int i = 0; i < vec.size(); ++i) {cout << vec[i].first;}cout << endl;}return 0;
}
方法2
与方法一一样,不过使用stl比较
#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iterator>
#include<algorithm>
using namespace std;
int main()
{string s;map<char, int> mp;while (cin >> s) {mp.clear();for (char c : s) {++mp[c];}vector<pair<char, int>> vec(mp.begin(),mp.end());stable_sort(vec.begin(), vec.end(), [](const pair<char, int>& a, constpair<char, int>& b) {return a.second > b.second;});for (auto iter = vec.begin();iter != vec.end();++iter) {cout << iter->first;}cout << endl;}return 0;
}
这篇关于华为机考:HJ102 字符统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!