2109. 向字符串添加空格
简单题
class Solution {
public:
string addSpaces(string s, vector<int>& spaces) {
for(int i = spaces.size()-1; i >= 0; i--){
s.insert(spaces[i], " ");
}
return s;
}
};
但是会超时:
所以使用官方题解的方法:双指针
基本思想就是:虽然题目中写的是在对应的字母前加上空格,但是实际上是将当前字符的位置替换为空格,整个字符串向后移动一位。
class Solution {
public:
string addSpaces(string s, vector<int>& spaces) {
string res;
//res.reserve(s.size() + spaces.size()); // 原字符串长度加上空格长度,spaces大小就是要加的空格数量
int j = 0; // 指向spaces的指针
for(int i = 0; i < s.size(); i++){
if(j < spaces.size() && i == spaces[j]){
res.push_back(' ');
j++;
}
res.push_back(s[i]);
}
return res;
}
};