剑值offer面试题5:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
代码实现:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string replaceSpace(string s) {
int count = 0;
int sOldSize = s.size();
for(int i = 0; i < s.size(); i++) //统计空格的数量
{
if(s[i] == ' ')
count++;
}
s.resize(s.size() + count * 2);
int sNewSize = s.size();
for(int i = sNewSize - 1,j = sOldSize - 1; j < i; i--,j--)
{
if(s[j] != ' ') //如果不等于空格,直接复制
s[i] = s[j];
else //如果等于空格,替换%20
{
s[i] = '0';
s[i-1] = '2';
s[i-2] = '%';
i -= 2;
}
}
return s;
}
void test01()
{
string s;
cout << "请输入字符串:";
getline(cin,s);
cout << replaceSpace(s) << endl;
}
int main(void)
{
test01();
return 0;
}