目录
来源:力扣
思路:
一个空格替换成三个字符,
- 先找出有多少个空格(n),扩增字符串,在字符串后面加(2xn)个空格
然后创建两个指针i,j 分别指向原来字符串末尾和现在字符串末尾
- 判断i指针指向不为空,将i指针指向的赋给j指针指向,i--,j--
- 当i指针指向空格时,i指针不移动,将j指针向前移动三格并分别赋“%20”
完成后 i--, j--
- 当i == j 时跳出循环
代码:
class Solution {
public:
string replaceSpace(string s) {
int len = s.size();//原始字符串长度
int count = 0;//空格数量
for(int i = 0; i<s.size(); i++){
if(s[i]==' ')count++;
}
s.resize(len+count*2);//重新设置字符串长度
for(int i=len-1,j=s.size()-1;i<j;i--,j--){
if(s[i]!=' ') //i不为空格 将i向j赋值
s[j]=s[i];
else{ //i为空格 i不动 j向前移动两个并赋值‘%20’
s[j]='0';
s[j-1]='2';
s[j-2]='%';
j = j-2;
}
}
return s;
}
};