题目链接:
力扣-剑指 Offer 05. 替换空格https://leetcode.cn/problems/ti-huan-kong-ge-lcof/
题目内容:
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
限制:
0 <= s 的长度 <= 10000
自己思路:
新建一个vector<char>,然后遍历原字符串,遇到空格就替换,否则直接push_back。最后,再将vector<char>转string。
class Solution {
public:
string replaceSpace(string s) {
vector<char> ss;
for(int i = 0;i < s.size();i++){
if(s[i] != ' '){
ss.push_back(s[i]);
}else{
ss.push_back('%');
ss.push_back('2');
ss.push_back('0');
}
}
string rst;
// vector<char> 转 string
rst.assign(ss.begin(),ss.end());
return rst;
}
};
其他思路:原地修改(用到resize函数)
class Solution {
public:
string replaceSpace(string s) {
int len = s.size();
int count = 0; // 统计空格数量
// 统计空格数量
for(char c : s){
if(c == ' ') count ++;
}
// resize字符串s的长度
s.resize(len + 2 * count);
// 倒序遍历修改原字符串
int i = len - 1;
int j = s.size() - 1;
while(i >= 0){
if(s[i] != ' '){
s[j] = s[i];
j -= 1;
}else{
s[j] = '0';
s[j - 1] = '2';
s[j - 2] = '%';
j -= 3;
}
i -= 1;
}
// 返回s
return s;
}
};