请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
题解
这道题如果正着想就很容易卡,我们可以先统计空格,然后resize,将原字符串扩充至新的大小,然后倒过来复制,就不用考虑将字符串整体右移的麻烦操作了。
class Solution {
public:
string replaceSpace(string s) {
int count=0;
int size=s.size();
for(int i=0;i<size;i++)
{
if(s[i]==' ')
count++;
}
s.resize(size+count*2);
int newsize=s.size();
for(int i=size-1,j=newsize-1;i>=0,j>=0;i--,j--)
{
if(s[i]!=' ')
s[j]=s[i];
else
{
s[j]='0';
s[j-1]='2';
s[j-2]='%';
j-=2;//多出两格要左移,否则不同步
}
}
return s;
}
};