题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
想法一:
开辟新指针,空间消耗;
class Solution {
public:
void replaceSpace(char *str,int length) {
int j=0;
int count = 0;
int oldlen = 0;
//计算替换后的字符串长度
while(str[oldlen]!='\0')
{
if(str[oldlen]==' ')
count++;
oldlen++;
}
char *result = str + oldlen + count*2;
char *temp = str + oldlen;
while(temp!=result)
{
if(*temp==' ')
{
*result--='0';
*result--='2';
*result--='%';
}
else
*result--=*temp;
temp--;
}
str = result;
}
};
想法二:
不开辟新指针,直接挪动位置:
class Solution {
public:
void replaceSpace(char *str,int length) {
int j=0;
//计算替换后的字符串长度
int count = 0;
int blank = 0;
while(str[count]!='\0')
{
if(str[count]==' ')
{
blank = blank+2;
}
count++;
}
int newlen = count + blank;
//从后往前填
for(int i=count;i>=0;i--)
{
if(str[i]==' ')
{
str[newlen--] = '0';
str[newlen--] = '2';
str[newlen--] = '%';
}
else
str[newlen--] = str[i];
}
}
};