题目来源:牛客网
编程链接:
第二题
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解法:
调用内嵌函数realloc,扩大字符串长度。
从字符串后面往前传。
class Solution {
public:
void replaceSpace(char *str,int length) {
int cnt = 0;
int i = length-1; //排除字符串最后一位
for(int i=0;i<length-1; cnt +=(str[i++]==' '));
int newlen = length + 2 *cnt;
str = (char *)realloc(str,newlen);
for(int j=newlen-1;i>=0;i--)
{
if(str[i] != ' ')
{
str[j--]=str[i];
}
else
{
str[j]= '0',str[j-1] = '2',str[j-2] = '%',j -=3;
}
}
}
};
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==nullptr)
return;
int cnt = 0;
int i= length-1;
for(int i=0;i < length-1;cnt += (str[i++] == ' '));
int newlen = length + 2 *cnt;
//没有增长指针也是可以的
for(int j=newlen-1;i>=0;i--)
{
if(str[i] !=' ')
{
str[j--] = str[i];
}
else
{
str[j] = '0',str[j-1] = '2',str[j-2] = '%',j-=3;
}
}
}
};