题目地址
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
题目描述:替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
例:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
解答
方法一:新开辟一个字符串,从前往后遍历。但空间复杂度为 O(n), 因此不建议。
方法二:计算出空格的个数,resize 相应的空间,从前往后遍历,但运行时间为 O(n^2), 不建议。
方法三:计算出空格的个数,resize 相应的空间,从后往前遍历,运行时间为 O(n)。
class Solution {
public:
string replaceSpace(string s) {
int countSpace = 0;
for( auto it:s)
if( it == ' ')
countSpace++;
int beforePos = s.size() - 1;
s.resize( s.size() + countSpace * 2);
for( int i = s.size() - 1; i > -1; beforePos--){
if( s[ beforePos] == ' '){
s[i--] = '0', s[i--] = '2', s[i--] = '%';
}
else
s[i--] = s[ beforePos];
}
return s;
}
};