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