题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <iostream> #include <string> #include<vector> using namespace std; int main() { vector<string> map (27, ""); string str, res = ""; getline(cin, str); // 01注意cin的局限性 int len = str.size(); char chars[1001] = {'\0'}; for(int i = 0; i < len; ++i) { if(str[i] >= 'a' && str[i] <= 'z') map[str[i]-96] += str[i]; else if(str[i] >= 'A' && str[i] <= 'Z') map[str[i]-64] += str[i]; else chars[i] = str[i]; } // for(int i = 1; i <= 26; ++i) cout << map[i] << endl; int idx = 0; for(int i = 1; i <= 26; ++i) { int sublen = map[i].size(); for(int j = 0; j < sublen;) { if(chars[idx] != '\0') idx++; else chars[idx++] = map[i][j++]; // 02 同步递增 } } for(int i = 0; i <= 1000; ++i) if(chars[i] != '\0') res += chars[i]; // 03 cout << res; } // 64 位输出请用 printf("%lld")