请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1: 输入:s = "We are happy."
输出:"We%20are%20happy."
思路:预先给数组扩容带填充后的大小,然后在从后向前进行操作。
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout<<"请输入转换字符串:"<<endl;
string s;
getline(cin,s);
int pre_size=s.size();
int count=0;
for (int i=0;i<pre_size;i++)
{
if (s[i]==' ')
{
count+=1;
}
}
s.resize(pre_size+2*count);
int cur_size=pre_size+2*count;
for (int j=pre_size-1,k=cur_size-1;j<k;j--,k--)
{
if (s[j]!=' ')
{
s[k]=s[j];
}
else{
s[k]='0';
s[k-1]='2';
s[k-2]='%';
k=k-2;
}
}
cout<<"result: "<<s<<endl;
return 0;
}
结果: