创建新的字符串 遍历旧字符串 遇到空格 +“%20” 否则直接加到新字符串中
在原有的字符串上进行修改 则需要resize 旧字符串的长度,选择从后往前遍历 从而避免从前往后移动剩余字符串的操作(从前往后使用 insert()插入‘%20’ 然后earse()删除空格)
class Solution {
public:
string replaceSpace(string s) {
//**********方法一**************
// int count = 0;
// // 创建新的字符串
// string ans;
// for(int i = 0; i < s.size(); i++){
// if(s[i] == ' '){
// ans += '%';
// ans += '2';
// ans += '0';
// }
// else ans += s[i];
// }
// return ans;
//******************************
//**********方法二**************
// 对字符串中出现的空格进行计数
int count = 0;
for(auto ch : s){
if(ch == ' ') count++;
else continue;
}
// 旧字符串的尾数
int left = s.size() - 1;
s.resize(s.size() + (2 * count));
// 新字符串的尾数
int right = s.size() - 1;
//选择从后往前 避免从前往后移动剩余字符串的操作
for(;right > left; right--, left--){
if(s[left] != ' '){
s[right] = s[left];
}
else{
s[right--] = '0';
s[right--] = '2';
s[right] = '%';
}
}
return s;
}
};