class Solution {
public://这一次 需要看答案比较 总体思路正确 但是 在第10行 求空格数 以及原来字符串的饿大小的时候出现了 问题;并且没有判断有没有超出length;没
void replaceSpace(char *str,int length)//没有理解length的值;
{
if(length<=0)
return ;
int number_space=0;
int old_length=0;
int i=0;
while(str[i]!='\0')//注意这里要是用 数组的遍历;为什么不能用 指针的遍历方式 是不是更改了指针的地址 之后 对后面的有影响!对 应该是;
{
++old_length;
if(str[i]==' ')
number_space++;
++i;
}
int new_length=old_length+number_space*2;
if(new_length>length)
return ;
int new_index=new_length;
int old_index=old_length;
while((new_index>old_index) && (old_index>=0))
{
if(str[old_index]==' ')
{
str[new_index--]='0';
str[new_index--]='2';
str[new_index--]='%';
}
else
str[new_index--]=str[old_index];
old_index--;//并且这里是必须的,不能在上面的公式中 old_index--;因为每一次判断都会修改old的值
}
}
};
这一次存在的主要问题:
1、不清楚length代表的是什么意思;跟old_length不一回事;
2、求number_length的时候不能用指针遍历的方式,因为这样会修改指针的地址;
3、最后一个判断的时候 不能省事直接str[old_index--];因为这样判断一次就会修改old_index的值 ;if else 会修改两次;