题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <iostream> #include <vector> using namespace std; bool ischar(char c) { if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) return true; else return false; } int main() { string s; getline(cin, s); int len = s.length(); vector<int> nochar; vector<char> ischar1; for (int i = 0; i < len; i++) { if (!ischar(s[i])) { nochar.push_back(i); } } for (int j = 0; j < 26; j++) { for(int i=0;i<len;i++) { if (s[i] - 'a' - j == 0 || s[i] - 'A' - j == 0) { ischar1.push_back(s[i]); } } } for(int i=0,j=0,k=0;i<len;i++,j++,k++) { if (ischar(s[i])) { cout<<ischar1[k]; j--; } else { cout<<s[nochar[j]]; k--; } } } // 64 位输出请用 printf("%lld")