题目
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
解题思路
c++中的string是可扩展的,c#中不能,在c#里String的内容是不能改变的,一旦试图改变其内容就会产生一个新的实例
因此可以用c++先从头到尾遍历记录有多少个空格,再把原String长度扩充增加空格数*2的长度,最后从尾部开始挪位即可实现替换空格,如下是代码
#include <string>
using namespace std;
class Solution
{
public:
string replaceSpace(string s)
{
int count = 0;
int len = s.length();
for (char c : s)
{
if (' ' == c)
{
++count;
}
}
s.resize(len + count * 2);
int newLenth = s.length();
for (int i = len - 1,j = newLenth - 1; i < j; i--, j--)
{
if (' ' == s[i])
{
s[j] = '0';
s[j - 1] = '2';
s[j - 2] = '%';
j -= 2;
}
else
{
s[j] = s[i];
}
}
return s;
}
};