解法1:双指针法,不需要使用额外空间
首先统计字符串中空格的个数,然后将字符串扩容到将空格替换为%20的长度 ,指定两个指针,1指针指向字符串扩容前的最后一个元素位置,2指针指向扩容后最后一个元素位置,然后开始循环,当1指针指向的元素不是空格时,把1指针元素赋格2指针,然后两个指针同时向前移动;当1指针指向元素为空格,把%20赋给2指针,并且2指针向前移动2位。
class Solution {
public:
string replaceSpace(string s) {
int index1 = s.size() - 1;
int count = 0;
for(int i = 0;i< s.size();i++)
{
if(s[i] == ' ')
{
count++;
}
}
s.resize(s.size()+count * 2);
int index2 = s.size() - 1;
for(;index1 < index2;index1--,index2--)
{
if(s[index1] != ' ')
{
s[index2] = s[index1];