题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
#include <stdio.h>
#include <string.h>
int main() {
char str[1001]={0};
fgets(str,1001,stdin);
int len = strlen(str);
char sortStr[1001]={0};
//按照字母序提取字符
int sortNum=0;
for(char i='A';i<='Z';i++)
{
for(int j=0;j<len;j++)
{
if(str[j] == i || str[j]-32 == i)
{
sortStr[sortNum++] = str[j];
}
}
}
int j=0;
for(int i=0;i<len;i++)
{
if(str[i]>='a'&& str[i]<='z' || str[i]>='A' && str[i]<='Z')
{
printf("%c",sortStr[j++]);
}else{
printf("%c",str[i]);
}
}
return 0;
}
//错误答案 冒泡排序法会改变相同元素之间下标的相对关系
// int a_Acompare(char a, char b)
// {
// if(a>='A' && a <='Z') a = a+('a'-'A');
// if(b>='A' && b <='Z') b = b+('a'-'A');
// if(a>b) return 1;
// else if(a<b) return 0;
// return 2;
// }
// int main() {
// char str[1001]={0};
// fgets(str,1001,stdin);
// int len = strlen(str);
// char sortStr[len];
// char *p=str;
// int charNum=0;
// while(*p != '\n')
// {
// if(*p>='a'&& *p<='z' || *p>='A' && *p<='Z')
// sortStr[charNum++] = *p;
// p++;
// }
// char temp;
// for(int i=0;i<charNum;i++)
// {
// for(int j=i+1;j<charNum;j++)
// {
// if(a_Acompare(sortStr[i],sortStr[j]) == 1)
// {
// temp = sortStr[i];
// sortStr[i] = sortStr[j];
// sortStr[j] = temp;
// }
// }
// }
// int j=0;
// for(int i =0;i<len;i++)
// {
// if(str[i]>='a'&& str[i]<='z' || str[i]>='A' && str[i]<='Z')
// {
// printf("%c",sortStr[j++]);
// }else{
// printf("%c",str[i]);
// }
// }
// return 0;
// }
查看11道真题和解析