华为机试 HJ45题解 | #名字的漂亮度#
名字的漂亮度
https://www.nowcoder.com/practice/02cb8d3597cf416d9f6ae1b9ddc4fde3
#include <iostream> #include <string> #include <vector> #include <map> #include <algorithm> #include <unordered_map> using namespace std; typedef pair<char, int> PAIR; bool cmp_by_value(const PAIR& lhs, const PAIR& rhs) { return lhs.second > rhs.second; } struct CmpByValue { bool operator()(const PAIR& lhs, const PAIR& rhs) { return lhs.second > rhs.second; } }; int CalBeatifulRate(const std::string& s) { if (s.size() == 0) { return 0; } int maxRateSum = 0; map<char, int> sMap; for (auto ch : s) { sMap[ch]++; } //把map中元素转存到vector中 vector<std::pair<char, int>> vec(sMap.begin(), sMap.end()); // 对sMap按照出现的次数进行排序 std::sort(vec.begin(), vec.end(), cmp_by_value); int maxVal = 26; for (int i = 0; i < vec.size(); i++) { maxRateSum += (vec[i].second * maxVal); maxVal--; } return maxRateSum; } int main() { int n; string nStr; vector<string> sVec; getline(cin, nStr); n = stoi(nStr); for (int i = 0; i < n; i++) { string s; getline(cin, s); sVec.push_back(s); } for (int i = 0; i < sVec.size(); i++) { int res = CalBeatifulRate(sVec[i]); std::cout << res << std::endl; } return 0; }