1.题目描述
请实现一个函数,把字符串
s
中的每个空格替换成"%20"。
方法:字符数组
2.算法思想
1.首先把空格替换成“%20”,字符串长度需要变化,有一个空格,字符串就要扩加两个空格,才能保证放得下
2.改变字符串长度可以用resize()函数
3.当字符串变成一个新的长度以后,两个指针,一个放在旧字符串的尾部,称为i,一个放在新字符串的尾部,称为j
4.移动两个指针(从尾部向头部移动),如果i指向的位置里的元素不是空格就直接赋值给j指向的位置区域
5.如果i指向的位置里的元素是空格,则将j位置赋值为“0”,j-1位置赋值为“2”,j-2位置赋值为“%”
6.j的位置由j指向的位置,变成j-2指向的位置
7.一直循环,直到i不小于j为止
3.代码
class Solution {
public:
string replaceSpace(string s) {
int count=0,len=s.size();
for(char c:s)
{
if(c==' ')
count++;
}
s.resize(len+2*count);//f=len+2*count
for(int i=len-1,j=s.size()-1;i<j;i--,j--)
{
if(s[i]!=' ')
s[j]=s[i];
else
{
s[j]='0';
s[j-1]='2';
s[j-2]='%';
j=j-2;
}
}
return s;
}
};