#include <iostream>
using namespace std;
int main()
{
    string str; char zm[1000]; int n = 0;
    getline(cin,str);
    for(int i = 0; i < 26; i++)
        for(int j = 0; j < str.length() ;j++)
            if(str[j]-'a' == i || str[j]-'A' == i)
                zm[n++] = str[j];
    n = 0;
    for(int i = 0; i < str.length();i++)
        if(isalpha(str[i]))
            str[i] = zm[n++];
    cout<<str;
    return 0;
}

在str中按26个字母顺序先逐个找出暂存,再顺序替换str中的字母;