题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
思路: 1、因为排序不能区分大小写字母。所以用循环的方式,从(A/a到Z/z)一个一个做判断,保存到另一个字符数组str_sort中 2、循环输入的字符串,如果是字母,就用str_sort数组中的数据替换,然后输出。
#include <stdio.h>
#define DIFF ('a'-'A')
int main()
{
char str[1000] = {0};
gets(str);
int len = strlen(str);
char str_sort[len];
int index = 0;
memset(str_sort, 0, len);
for(int i = 'A'; i <= 'Z'; i++)
{
for(int j = 0; j < len; j++)
{
if(str[j] == i ||
(str[j] - DIFF == i && str[j] >= 'a' && str[j] <= 'z'))
{
str_sort[index++] = str[j];
}
}
}
#if 0
/* 打印str_sort */
printf("index:[%d], str_sort = [%s]\n", index, str_sort);
#endif
index = 0;
for(int i = 0; i < len; i++)
{
if(str[i] >= 'A' && str[i] <= 'Z'
|| str[i] >= 'a' && str[i] <= 'z')
{
str[i] = str_sort[index++];
}
printf("%c", str[i]);
}
printf("\n");
return 0;
}