- 论坛徽章:
- 0
|
有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面(大or小写之间不要求保持原来的次序),如有可能尽量选择时间和空间效率高的算法
一看到这个特别是括号的条件,我的第一反应就是快排那个思路....
#include stdio.h>
#include stdlib.h>
#define MAX 50
int is_lowercase(char a)
{
if(a>='a'&&a='z')
return 1;
return 0;
}
void swap(char* a, char* b)
{
char tmp = *a;
*a = *b;
*b = tmp;
}
char* change_a_before_A(char* str)
{
int i = 0;
int j = -1;
int len = strlen(str);
for(; ilen; i++)
{
if(is_lowercase(str))
{
j++;
swap(str+j,str+i);
}
}
}
int main(int argc, char *argv[])
{
char str[MAX] = "aBDErekrkDSLKHDAsaa";
printf("the original str:\n%s\n",str);
change_a_before_A(str);
printf("after the str:\n%s\n",str);
system("PAUSE");
return 0;
}
应该没有比这个用更少的时间和空间的了
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76292/showart_2030942.html |
|