字符串面试题(三)— 把一个字符串的大写字母放到字符串的后面
把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。
例如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
", s);
}
return 0;
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。