分析:
需要使用稳定排序,即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;
}

本文介绍了一种使用C++中的stable_sort()函数实现对字符串中字母进行稳定排序的方法。通过定义自定义比较函数cmp,确保排序过程中相同字母的大写形式在小写形式之前。代码示例展示了如何读取一行文本,解析其中的字母,并使用稳定排序来保持原有的相对顺序。
560

被折叠的 条评论
为什么被折叠?



