题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
解题思路
class Solution {
public:
string
replaceSpace(string s
) {
int length
= s
.size();
int space_n
= 0;
for(int i
=0; i
<length
; ++i
){
if(s
[i
]==' ')
++space_n
;
}
s
.resize(length
+2*space_n
);
int i
= length
- 1, j
= s
.size()-1;
while(i
>=0&&i
!=j
){
if(s
[i
]==' '){
s
[j
--] = '0';
s
[j
--] = '2';
s
[j
--] = '%';
--i
;
}
else
s
[j
--] = s
[i
--];
}
return s
;
}
};
1.先遍历一次字符串,这样就能统计出字符串中空格的总数space_n,并可以由此计算出替换之后的字符串的总长度length+2 * space_n. 2.利用string的resize函数,将string的长度重置为length+2*space_n,新增加的部分都会自动用空字符填充。 3.用两个指针,两个指针都指向resize后的string,但是i指向的是原来单词的末尾字符,j指向的是当前单词的末尾。把i位置的单词复制到j位置处,i和j都向前移动。如果i位置处是空格,j位置处就依次填上0、2、%。 4.注意下标不能越界。如果传入的是空string,那么i的初始值可能为s.size()-1=0,s[i]就会下标越界。