剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
解题思路一
重新创建一个字符串,复制原字符串,遇到空格就换成“%20”加入到新字符串后面,比较浪费空间。
代码
class Solution {
public:
string replaceSpace(string s) {
int len=s.size();
string replace="";
for (int i=0;i<len;i++){
if(s[i]==' '){
replace.append("%20");
}
else{
replace=replace+s[i];
}
}
return replace;
}
};
解题思路二
先统计原字符串中空格的数量,然后把原字符串的长度扩充成替换后的长度,从后往前复制原字符串,遇到空格就替换。
代码
class Solution {
public:
string replaceSpace(string s) {
int numspace=0;
int len=s.size();
for(int i=0;i<len;i++){
if(s[i]==' '){
numspace++;
}
}
s.resize(len+2*numspace);
int porigin=len-1;
int pnew=len+2*numspace-1;
while( pnew>porigin){
if(s[porigin]==' '){
s[pnew]='0';
s[pnew-1]='2';
s[pnew-2]='%';
pnew=pnew-3;
porigin=porigin-1;
}
else{
s[pnew--]=s[porigin--];
}
}
return s;
}
};