题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <stdio.h>
#include <string.h>
int main() {
char s[1000];
char s2[26][1000];
int num[26]={0};
for(int i=0;i<25;i++)
memset(s2[i],'\0',sizeof(s2[i]));
char s3[1000];
memset(s3,'\0',sizeof(s3));
gets(s);
int n=strlen(s);
int mark[n];
for(int i=0;i<n;i++)
{
mark[i]=0;
if(s[i]>='a'&&s[i]<='z')
{
s2[s[i]-'a'][num[s[i]-'a']]=s[i];
num[s[i]-'a']++;
}
else if(s[i]>='A'&&s[i]<='Z')
{
s2[s[i]-'A'][num[s[i]-'A']]=s[i];
num[s[i]-'A']++;
}
else
mark[i]=1;
}
for(int i=0;i<26;i++)
{
if(num[i]!=0)
strncat(s3,s2[i],num[i]);
}
int j=0;
for(int i=0;i<n;i++)
{
if(mark[i]==1)
printf("%c",s[i]);
else
{
printf("%c",s3[j]);
j++;
}
}
return 0;
}

查看3道真题和解析