AcWing 16. 替换空格
原题链接
简单
作者:
繁花似锦
,
2020-02-01 16:57:45
,
所有人可见
,
阅读 1148
使用string 的 find() 和 replace() 函数
class Solution {
public:
string replaceSpaces(string &str) {
int pos=str.find(' ');
while(pos!=-1)
{
str.replace(pos,1,"%20"); // replace(下标,替换长度,替换子串)
pos=str.find(' ',pos+3); // str.find(查找子串,下标从哪里开始)
}
return str;
}
};
y总更简洁的写法,利用C++ string 可以拼接
class Solution {
public:
string replaceSpaces(string &str) {
string res;
for(auto x:str)
if(x==' ') res += "%20";
else res += x;
return res;
}
};
训练双指针算法,倒着填
class Solution {
public:
string replaceSpaces(string &str) {
int len = 0;
for(auto c : str)
if(c==' ') len+=3;
else len ++ ;
int i = str.size()-1 , j = len-1;
str.resize(len); // 扩容
while(i>=0)
{
if(str[i]==' ')
{
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else str[j--]=str[i];
i--;
}
return str;
}
};