So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
统计字母频率并且最后组合起来即可,代码如下: #include <iostream> #include <vector> #include <algorithm> using namespace std; bool com(vector<char> a, vector<char> b) { return a.size() > b.size(); } string frequencySort(string s) { vector<vector<char> > count; //char t = s[0]; vector<char> k; k.push_back(s[0]); count.push_back(k); int flag = 0; for (int i = 1; i < s.size(); i++) { flag = 0; for (int l = 0; l < count.size(); l++) { if (s[i] == count[l][0]) { count[l].push_back(s[i]); flag = 1; break; } } if (flag == 0) { vector<char> p; p.push_back(s[i]); count.push_back(p); } } sort(count.begin(), count.end(), com); string result; for (int i = 0; i < count.size(); i++) { for (int l = 0; l < count[i].size(); l++) { result += count[i][l]; } } return result; }