题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include<iostream> #include<string> using namespace std; bool ischar(char c) { //判断是否是字符 return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } int toint(char c) { //将大小写字母转为同样的数字起跑线 return (c >= 'a' && c <= 'z') ? c - 'a' : c - 'A'; } int main() { string s; while (getline(cin, s)) { int next; //冒泡 for (int i = s.length() - 1; i > 0; i--) { for (int j = 0; j < i; j++) { if (ischar(s[j])) { //首先要是字母才可以交换位置 next = j + 1; while (next <= i && !ischar(s[next])) next++; //找到下一个字母 if (ischar(s[next]) && toint(s[j]) > toint(s[next])) { swap(s[j], s[next]); //交换 } } } } cout << s << endl; } return 0; }