把一个字符串的大写字母放到字符串的后边,各个字符的相对位置不变,不能申请额外的空间
把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间
例如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不要咬文嚼字了,弟!!