剑指offer 第二题 数组的替换

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  会修改两次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值