记录新手小白的做题历程
题目:请实现一个函数,把字符串
s
中的每个空格替换成"%20"。
思路:一看到剑指offer下意识觉得好难,不过是个简单题?大概的思路是遍历字符,遇到空格就替换成%20,空格的ASCII码是32.
写出的代码是这个样子,但是报错了:
class Solution {
public:
string replaceSpace(string s) {
for(int i=0;i<s.size();i++){
if(s[i]==32){
s[i]='%20';
}
}
return s;
}
};
不太懂,看看官方的代码。
官方的思想让我明白自己漏了一些东西,不过官方给出的代码是Java,贴上评论区内大佬的做法。
class Solution {
public:
string replaceSpace(string s) { //字符数组
string array; //存储结果
for(auto &c : s){ //遍历原字符串
if(c == ' '){
array.push_back('%');
array.push_back('2');
array.push_back('0');
}
else{
array.push_back(c);
}
}
return array;
}
};
我忽视了一些东西,加入的是三个字符,我不能把它简单地插入原字符串中,而且原字符串的空间也不够。
由此题,意识到string可以加长,如同vector一样,string也可以用push_back;
中间插入的时候也可以这么写:
if(c == ' '){
array += "%20";
}
else{
array += 'c';
}
这个加号出乎我的意料,原来string也可以这么用,直接在后面加入字符或字符串。
哇哦真的很好使,学到了!
下一题!