问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We are happy时,则经过替换之后的字符串为We%20are%20happy。
解决思路:首先计算原字符串长度,空格个数,然后计算替换之后的长度,设置两个指针分别指向原,新字符串的尾部,逐个赋值。
复杂度:O(n);
具体代码:(C++)
class Solution
{
public:
char* replaceSpace(char*str)
{
if(str == nullptr)
return nullptr;
int old_length = 0;
int num_of_space = 0;
int i = 0;
while(str[i] !='\0')
{
++old_length;
if(str[i] == ' ')
++num_of_space;
++i;
}
if(num_of_space ==0)
return str;
int new_length = old_length + 2*num_of_space;
char* strDest = new char[new_length +1];
int index_of_old = old_length;
int index_of_new = new_length;
while(index_of_old >=0 && index_of_new>=index_of_old)
{
if(str[index_of_old] == ' ')
{
strDest[index_of_new--] = '0';
strDest[index_of_new--] = '2';
strDest[index_of_new--] = '%';
}
else
{
strDest[index_of_new--] = str[index_of_old];
}
-- index_of_old;
}
return strDest;
}
};