分析:
需要使用稳定排序,即stable_sort()
函数。
代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
typedef struct{
char r,c;
}letter;
int cmp(letter a,letter b){
if(a.c<b.c)
return 1;
return 0;
}
int main(){
char b[1000];
letter a[1000];
while(cin.getline(b,1000)){
int len=strlen(b),k=0;
for(int i=0;i<len;i++){
if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z')){
a[k].r=b[i];
if(b[i]>='a'&&b[i]<='z')
a[k].c=b[i];
else if(b[i]>='A'&&b[i]<='Z')
a[k].c=b[i]-'A'+'a';
k++;
}
}
stable_sort(a, a+k, cmp);
k=0;
for(int i=0;i<len;i++){
if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z')){
cout<<a[k++].r;
}
else
cout<<b[i];
}
cout<<endl;
}
return 0;
}