替换空格
一、题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
二、我的思路
统计原来字符串的长度和空格数量,将原来字符串依次从后面复制到新的字符串中,遇到空格则替换成对应字符。注意新字符串最后不能忘记添加结束符‘\0’。
三、我的代码
class Solution {
public:
void replaceSpace(char *str,int length) {
int oldlen = 0, spacelen = 0, newlen = 0;
char *p = str;
while(*p != '\0'){
if(*p == ' ') spacelen++;
oldlen++;
p++;
}
newlen = oldlen + spacelen*2;
if(newlen >= length) return;
for(int i = oldlen-1, j = newlen-1;i >= 0, j >= 0;i--){
if(str[i] == ' '){
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else{
str[j--] = str[i];
}
}
str[newlen] = '\0';
}
};