AcWing 16. 替换空格
原题链接
简单
作者:
理想不大
,
2021-03-08 15:23:08
,
所有人可见
,
阅读 387
C++ 代码
class Solution {
public:
string replaceSpaces(string &str) {
int length = 0;
for (auto x: str) if (x == ' ') length+=3;
else length++;
int i = str.size()-1;
int j=length-1;
str.resize(length);
while(i>=0)
{
/*********正确*********/
if (str[i] == ' ')
{
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else str[j--] = str[i];
i--;
/*********正确*********/
/*********错误*********
if (str[i--] == ' ') i减了一次
{
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else str[j--] = str[i--]; 到这个时候其实i已经减了两次
*********************/
/*********正确*********
if (str[i--] == ' ')
{
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else str[j--] = str[i+1];
*********************/
}
return str;
}
};