题解 | #字符串排序#
字符串排序
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")

