#include <iostream> #include<algorithm> using namespace std; //字符串s中有空格,我们使用getline来读取 //先遍历字符串将其中的字母字符存下来,对其进行排序(不区分大小写需要自定义规则) //遍历原字符串,遇到字母则输出排序字母串中对应位置,遇到非字母则输出原字符 int main() { string s; string letters; getline(cin,s); //存储字母 for(char ch : s) { if(isalpha(ch)) letters.push_back(ch); } // 自定义排序:不区分大小写,但保持输入顺序(稳定排序)lamba表达式实现 stable_sort(letters.begin(), letters.end(), [](char a, char b) { return tolower(a) < tolower(b); // 按小写字母比较 }); //输出结果 int index=0; for(char ch: s) { if(isalpha(ch)) cout<<letters[index++]; else cout<<ch;; } return 0; } // 64 位输出请用 printf("%lld")