题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
//这个是典型的桶排序
//通过getValue()函数将字符'a-z','A-Z'==>0-25。将输入的字符串分到对应的桶。最后一一返回。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int getValue(char ch) {
int value = (int)ch;
if (value >= (int)'A' && value <= (int)'Z') {
value -= (int)'A';
}
if (value >= (int)'a' && value <= (int)'z') {
value -= (int)'a';
}
return value;
}
int main() {
string input;
while (getline(cin, input)) {
vector<int> index;
vector<vector<char>> v(26);
for (int i = 0; i < input.size(); i++) {
int a = (int)input[i];
if ((a >= (int)'A' && a <= (int)'Z') ||
(a >= (int)'a' && a <= (int)'z')) {
index.push_back(i);
int x=getValue(input[i]);
v[x].push_back(input[i]);
}
}
string str;
for(auto & i : v){
for(char j : i){
str+=j;
}
}
for(int i=0;i<index.size();i++){
input[index[i]]=str[i];
}
cout << input << endl;
}
}
// 64 位输出请用 printf("%lld")
