这个题目有个坑,就是本身空格是占一个位置的,但是这里要换成3个位置的字符串,如果不修改字符串大小,则每次只能替换最后一个,所以先数出空格个数,修改字符串的大小,从后面往前面复制,分别记录新旧字符串的末尾做i,j指针,从后面像前面复制,跳出循环的条件则是i==j,表示已经没有空格了,因为每次i向前1格,而j是向前移动3格
int size = s.size();
int count = 0;
for (auto c : s)
{
if (c == ' ')
{
count++;
}
}
s.resize(size + 2 * count);
for (int i = size - 1, j = s.size() - 1; i < j; i--, j--)
{
if (s[i] != ' ')
{
s[j] = s[i];
}
else
{
s[j-2] = '%';
s[j - 1] = '2';
s[j] = '0';
j -= 2;
}
}
return s;
还有就是利用c++的string的特性
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;