链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof
题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
方法一:创建一个新字符串
class Solution {
public:
string replaceSpace(string s) {
string ans;
for(int i = 0; i < s.size(); i++) {
if(s[i] == ' ') {
ans.append("%20"); //append可以插入一个字符串
}
else {
ans.push_back(s[i]); //push_back一次只能一个字符是char类型
}
}
return ans;
}
};
方法二:在原字符串上改动,有点双指针的意思。注意要从后往前遍历。
class Solution {
public:
string replaceSpace(string s) {
int count = 0;
int sOldSize = s.size();
for(int i = 0;i < s.size(); i++) {
if(s[i] == ' '){
count++;
}
}
s.resize(s.size() + count * 2);
int sNewSize = s.size();
for(int j=sOldSize-1,i=sNewSize-1;j<i;i--,j--) {//从后往前进行遍历修改
if(s[j] != ' ') {
s[i] = s[j];
} else {
s[i] = '0';
s[i-1] = '2';
s[i-2] = '%';
i -= 2;
}
}
return s;
}
};