首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

把一个字符串的大写字母放到字符串的后边,各个字符的相对位置不变,不能申请额外的空间

2013-03-19 
把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间例如AbcDeFGhi -bce

把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间

例如AbcDeFGhi ->bceiADFG

这道题目是今年腾讯的面试题,我的想法是基于冒泡的思想,从头开始扫描,遇到小写字母就往前面冒

初始:AbcDeFGhi

冒'b': bAcDeFGhi

冒'c': bcADeFGhi

冒'e': bceADFGhi

冒'h': bcehADFGi

冒'i':  bcehiADFG

得到最终结果为bceiADFG

最终代码如下

#include <stdio.h>#include <string.h>int main() {  char s[1000], t;  int i, j;  while (scanf("%s", s) != EOF) {    for (i = 1; i < strlen(s); ++i) {      j = i;      if ('a' <= s[i] && s[i] <= 'z')        while (j != 0 && 'A' <= s[j-1] && s[j-1] <= 'Z') {          t = s[j-1];          s[j-1] = s[j];          s[j--] = t;        }    }    printf("%s\n", s);  }  return 0;}


1楼querdaizhi昨天 11:55
哥,你的t不是额外的空间么??
Re: shen823797837昨天 12:38
回复querdaizhin不要咬文嚼字了,弟!!

热点排行