您的位置:首页 > 其它

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

2013-03-15 14:19 267 查看
例如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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐