剑指offer 05. 替换空格
题目链接
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
方法一: 双指针原地修改
string replaceSpace(string s) {
// 解法一: 双指针原地修改---------------------------------
int count = 0;
int len = s.size();
// 记录原字符串 空格 个数
for(int i = 0; i < s.size(); ++i){
if(s[i] == ' '){
count++;
}
}
if(count == 0)
return s;
// 扩容 原数组
s.resize(s.size() + count * 2);
// 从后向前原地修改
for(int i = len-1, j = s.size()-1; i < j; i--,j--){
if(s[i] != ' ')
s[j] = s[i];
else{
s[j] = '0';
s[j-1] = '2';
s[j-2] = '%';
j -= 2;
}
}
return s;
}
解法二: 利用 vector 特性
string replaceSpace(string s) {
// 解法二:
string res;
for (int i = 0; i < s.size(); ++i) {
if (s[i] != ' ')
res.push_back(s[i]);
else
res.append("%20");
}
return res;
}