- 题目描述:
-
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 输入:
-
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
- 输出:
-
对应每个测试案例,出经过处理后的字符串。
- 样例输入:
-
We Are Happy
- 样例输出:
-
We%20Are%20Happy
思路:先统计出空格的个数,再分配足够的空间用字符数组来做,从后往前扫一遍即可。时间复杂度是:O(n)
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
string line;
while(getline(cin,line))
{
int num_space = 0;
int len = line.length();
for (int i = 0; i < len; i++)
{
if (line[i] == ' ')
{
num_space++;
}
}
int newlen = len+num_space*2+1;
char *array = new char[newlen];
array[newlen-1] = '\0';
newlen--;
for (int i = len-1; i >= 0 ; i--)
{
if (line[i] == ' ')
{
array[newlen-1] = '0';
array[newlen-2] = '2';
array[newlen-3] = '%';
newlen = newlen - 3;
}
else{
array[newlen-1] = line[i];
newlen = newlen - 1;
}
}
cout<<array<<endl;
delete []array;
}
//system("pause");
return 0;
}