请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
法一:新开辟一个数组
class Solution {
public:
void replaceSpace(char *str,int length) {
char arr[100]={0};
int i=0;
char *p=str;
while(*str!='\0')
{
if(*str!=' ')
{
arr[i]=*str;
}
else
{
arr[i]='%';
arr[++i]='2';
arr[++i]='0';
}
i++;
*str++;
}
arr[i]='\0';
strcpy(p,arr);
}
};
法二:
class Solution {
public:
void replaceSpace(char *str,int length) {
int sz=0;
int tab=0;
char*p=str;
while(*p!='\0')
{
if(*p==' ')
{
tab++;
}
p++;
}
int right=length+tab*2;
str[right]='\0';
int left=length;
while(right!=left)
{
if(str[left]!=' ')
{
str[right--]=str[left--];
}
else
{
str[right--]='0';
str[right--]='2';
str[right--]='%';
left--;
}
}
}
};