描述
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
数据范围:0 \le len(s) \le 1000 \0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
示例1
输入:
"We Are Happy"
复制返回值:
"We%20Are%20Happy"
复制
示例2
输入:
" "
复制返回值:
"%20"
方法一:创建新数组,然后复制
char* replaceSpace(char* s ) {
int i=0,j=0;
int len = strlen(s);
static char ch[2000] = {0};
if (len == 0){
return "";
}
for (i=0, j=0; i < len;i++, j++){
if (s[i] != ' '){
ch[j] = s[i];
} else{
ch[j++] = '%';
ch[j++] = '2';
ch[j] = '0';
}
}
return ch;
}
方法二:从后向前原地替换(结果正确,提交出段错误)
char* replaceSpace(char* s ) {
int i=0,j=0,count=0, new_len=0;
int len = strlen(s);
for(i=0;i<len;i++){
if (s[i] == ' '){
count++;
}
}
new_len = len + count*2;
s[new_len] = '\0';
for (i = new_len -1, j = len - 1; i>=0 && i > j ; i--, j-- ){
if(s[j] == ' '){
s[i--] = '0';
s[i--] = '2';
s[i] = '%';
} else{
s[i] = s[j];
}
if (j == 6){
count++;
}
}
return s;
}