问题描述:
请实现一个函数,把字符串?s ?中的每个空格替换成"%20"。
输入:s = "We are happy."
输出:"We%20are%20happy."
知识点:
? ? ? ? string中的 reserve() 和 resize()的区别
- reserve()?为容器预留足够的空间,避免不必要的重复分配。预留空间大于等于字符串的长度。
- resize()?调整字符串的大小。如果字符串长度变小,多余的字符会被截掉。若长度变大,可以设置填充的字符。
代码实现:
class Solution {
public:
string replaceSpace(string s)
{
int n = s.size();
int count = 0;
for(int i = 0;i<n;++i)
{
if(s[i] == ' ')
{
count++;
}
}
int m = n + 2*count;
s.reserve(m);
int left = n;
int right = m;
while(left >= 0 && right > left)
{
if(s[left] != ' ')
{
s[right] = s[left];
right--;
}
else if(s[left] == ' ')
{
s[right--] = '0';
s[right--] = '2';
s[right--] = '%';
}
left--;
}
return s;
}
};
|