题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
1.统计字符串长度和空格数目,以此计算新的字符串的长度(newNum=oldNum+2*count;//不包括‘\0’的长度);
2.由后往前遍历字符串,若当前字符非空格,则将当前字符赋给对应新字符串;否则依次赋予‘0’,‘2’,‘%’。
代码:
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==nullptr ||length<=0) return;
int count = 0,i=0,oldNum=0,newNum=0;
while(str[i]!='\0'){
oldNum++;
if(str[i]==' ') count++;
i++;
}
newNum=oldNum+2*count;//不包括‘\0’的长度
if(newNum+1>length) return;
for(int j = oldNum+1-1;j>=0 ;j--){//先加1是考虑了'\0',再减1表示从0开始计数
if(str[j]!=' ')
str[newNum--]=str[j];//这里的newNum考虑了'\0'
else{
// str[j+2*count]='0';
// str[j+2*count-1]='2';
// str[j+2*count-2]='%';
str[newNum--]='0';
str[newNum--]='2';
str[newNum--]='%';
}
}
}
};