题目描述:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解析:
先从前往后数找到有多少个空格,计算出新的字符串的长度。然后,从后向前移动,非空格的直接移动到 cnt * 2 + i 的位置,而遇到空格时从(cnt - 1)* 2 + i 的位置依次放入 %20
class Solution {
public:
void replaceSpace(char *str,int length) {
int cnt=0;
for(int i=0; i<length; i++)
{
if(str[i]==' ') cnt++;
}
for(int i=length - 1; i>=0; i--)
{
if(str[i]!=' ') str[i+cnt*2] = str[i];
else{
cnt--;
str[i+2*cnt]='%';
str[i+2*cnt+1]='2';
str[i+2*cnt+2]='0';
}
}
}
};