题目:
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
class Solution {
public:
string replaceSpace(string s) {
int preSize = s.size();
int count = 0;
for(int i = 0 ; i < preSize ; i++)
{
if(s[i]==' ')
{
count++;
}
}
int newSize = preSize + count * 2;
s.resize(newSize);
// 这里for循环有两种写法
// for(int i=preSize-1;i>=0;i--)
// {
// if(s[i]==' ')
// {
// s[newSize-1]='0';
// s[newSize-2]='2';
// s[newSize-3]='%';
// ***************主要是这儿,因为判断条件不同而不同************
// newSize-=3;
// }
// else
// {
// s[newSize-1]=s[i];
// newSize--;
// }
// }
// 第二种for循环
// 当 i = j 时,跳出循环
for(int i=newSize-1,j=preSize-1;j<i;i--,j--)
{
if(s[j]!=' ')
{
s[i]=s[j];
}
else
{
s[i]='0';
s[i-1]='2';
s[i-2]='%';
i-=2; // 因为这里的i还会在循环过程表达式中减1,因此这儿是-2
}
}
return s;
// int count = 0;
// int s_Size = s.size()-1;
// //string news;
// for (auto it : s)
// {
// if (it == ' ')
// {
// ++count;
// }
// }
// int new_Size = s_Size + count * 2;
// //修改s的长度
// s.resize(new_Size + 1);
// for (int i = s_Size; i >= 0; --i)
// {
// if (s[i] == ' ')
// {
// s[new_Size] = '0';
// s[new_Size-1] = '2';
// s[new_Size-2] = '%';
// new_Size = new_Size - 3;
// }
// else
// {
// s[new_Size] = s[i];
// --new_Size;
// }
// }
// return s;
}
};