请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:
考场数组的操作,主要是从头到尾的操作要消耗O(N)复杂度,如果完成插值,则为O(N2),所以要从尾部倒过来转移。
注意:本题有两点要考虑。
其一,注意错误的返回值为return,而不是return false。
其二,主要要做检查。包括字符串的空值、长度,和插入长度是否超出字符串给的长度length。系统会测试这个的。
class Solution {
public:
void replaceSpace(char *str,int length) {
if(length <= 0 ||str == NULL)
return ;
int len1 = 0;
int len2 ;
public:
void replaceSpace(char *str,int length) {
if(length <= 0 ||str == NULL)
return ;
int len1 = 0;
int len2 ;
intblankNum = 0;
int i = 0;
while (str[i]!='\0')
{
if(str[i] ==' ')
{
++ blankNum;
}
++ len1;
++ i;
}
len2 = len1 + blankNum * 2;
if(len2 > length)
return ;
while(len1 >= 0)
{
if(str[len1] == ' ')
{
str[len2--] = '0';
str[len2--] = '2';
str[len2--] = '%';
}
else
{
str[len2--] = str[len1];
}
--len1;
}
}
};
int i = 0;
while (str[i]!='\0')
{
if(str[i] ==' ')
{
++ blankNum;
}
++ len1;
++ i;
}
len2 = len1 + blankNum * 2;
if(len2 > length)
return ;
while(len1 >= 0)
{
if(str[len1] == ' ')
{
str[len2--] = '0';
str[len2--] = '2';
str[len2--] = '%';
}
else
{
str[len2--] = str[len1];
}
--len1;
}
}
};