免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 989 | 回复: 0
打印 上一主题 下一主题

google 2009笔试题-字母排序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-18 16:56 |只看该作者 |倒序浏览
   有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面(大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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP