题解 | #字符串排序# C++桶排序
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <iostream> #include <cctype> #include <algorithm> #include <vector> using namespace std; int main() { string in; getline(cin, in); string alphas = ""; for (char c : in) { if (isalpha(c)) { alphas.push_back(c); } } vector<vector<int>> bucket(26, vector<int>(0)); for (char c : alphas) { if (islower(c)) { bucket[c - 32 - 'A'].push_back(c); } else { bucket[c - 'A'].push_back(c); } } alphas.clear(); for (int i = 0; i < 26; ++i) { if (bucket[i].size() > 0) { for (char c : bucket[i]) { alphas.push_back(c); } } } int j = 0; for (int i = 0; i < in.size(); ++i) { if (isalpha(in[i])) { in[i] = alphas[j++]; } } cout << in << endl; return 0; }