文章
60
粉丝
361
获赞
43
访问
524.6k
先将字母提取出来,然后对字母进行排序,在将排序后的字符串写回原字符串
#include <iostream>
#include <string>
#include <string.h>
#include<algorithm>
using namespace std;
struct zifu
{
char zi;
int id;
}str[500];
bool compare(zifu a,zifu b)
{
if(tolower(a.zi)==tolower(b.zi))
return a.id<b.id;
else
return tolower(a.zi)<tolower(b.zi);
}
int main()
{
string s;
while(getline(cin,s))
{
string s1="";
int len=s.size();
int cnt=0;
for(int i=0;i<len;i++)
if(s[i]>='A'&&s[i]<='z')//是字母,提取到结构数组中
{
str[cnt].zi=s[i];
str[cnt].id =cnt;
cnt++;
}
sort(str,str+cnt,compare);//对字母排序
//写回原字符串
int j=0;
for(int i=0;i<len;i++)
if(s[i]>='A'&&s[i]<='z')//是字母 写回
s[i]=str[j++].zi ;
cout<<s<<endl;
}
//system("pause");
return 0;
}
登录后发布评论
赞