将字符串中所有的c删除-(删除字符数组中指定元素)-核心算法分析

核心代码如下:

 //以abcac为例子 C语言默认会把字符数组最后加上'\0' 即 abcabc'\0'
        for (int i = 0, int j = 0; s[i] != '\0'; i++) {
            if (s[i] != 'c') {  //i=0 s[0]=a   i=1 s[1]=b   i=2时 s[2]=c if不成立  i=3 s[3]=a        i=4 s[4]=c 不成立
                s[j] = s[i];    //s[0]=a       s[j]=s[1]=b                       s[j]=s[2]=s[3]=a
                j++;            //j=1           j=2                                 j=3
            }       //s为新数组:  a              ab                 ab               aba                aba
        }
        s[j] = '\0';    //            for结束 在此处为新数组末尾加上'\0'  s = aba'\0'

 很多同学不理解 代码中 j 的含义,那么我就来解释一下:

首先理解算法的功能:删除字符数组中指定的某个元素(以c为例)

为了方便同学们理解 ,我把这个数组 s[] 比作一堆苹果,里面有好有坏,而需要删除的某个元素(c)就代表坏苹果。我们需要把这个苹果堆里的坏苹果扔掉,得到一个只有好苹果的苹果堆。我们就需要把这堆苹果中的每一个苹果(s[i])进行判断,如果是好苹果,就按顺序放在好苹果堆里(s[j++]=s[i])或者(s[j]=s[i];j++),如果是坏苹果那就扔掉,不需要放入好苹果堆(啥也不做)。此时i就代表 这一堆苹果中的每一个苹果的下标(包含好坏),而j代表的就是只含有好苹果的苹果堆里每一个苹果的下标。

i :所有苹果中每一个苹果的下标

j :好苹果堆里每一个苹果的下标

 具体流程分析:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值