您的位置:首页 > 职场人生

剑指offer 面试题4 替换空格

2014-07-11 19:31 393 查看
E:\arithmetic\BlankTo

复杂度O(n)

#include <stdio.h>
#include <string.h>
void blankToSymbol(char a[]);
int main(int argc, char *argv[])
{
/*测试用例:a)功能测试; b,c,d,e,f)特殊值(空格在开头,在结尾, 连续两个空格,全空格,没空格);g)负面测试 (空字符串)*/
char a[80] = "we are happy";
char b[80] = " we are happy";
char c[80] = "we are happy ";
char d[80] = "we  are happy";
char e[80] = "   ";
char f[80] = "weare";
char *g = NULL;

blankToSymbol(a);
blankToSymbol(b);
blankToSymbol(c);
blankToSymbol(d);
blankToSymbol(e);
blankToSymbol(f);
blankToSymbol(g);

return 0;

}

void blankToSymbol(char a[]){//长度不用给 ,自己求
if(a == NULL) {//增强鲁棒性
printf("blank to symbol failed!\n");
return;
}
int i, j;
int cntZero = 0;
int length = 0;//字符串长度,不算\0
for(i=0 ; a[i]!='\0' ; i++){
length++;
if(a[i] == ' '){
cntZero++;
}
}

for(i=length, j = length+cntZero*2 ; i>=0,j>=0 ; i--, j--){//计算公式别写错 ,i取到length,即\0
if(a[i] != ' '){
a[j] = a[i];
}
else{
a[j--] = '0';
a[j--] = '2';
a[j] = '%';
}
}
printf("%d\n%s\n", strlen(a), a);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: