字符串——去掉字符串中连续出现k个0的子串

给定字符串str和整数k,若str中有连续k个'0',则删除这些'0'。例如:str = ""A00B"
摘要由CSDN通过智能技术生成

【题目】 
  给定一个字符串str和一个整数k,如果str中刚好有连续的k个‘0’字符出现时,把k个连续的‘0’字符删除,返回处理后的字符串。

【举例】 
  str = “A00B”,k = 2,返回 “AB”。 
  str = “A0000B000”,k = 3,返回 “A0000B”。

【基本思路】

  1. 使用两个变量count和start。count表示目前出现的连续‘0’的个数,start表示连续个‘0’出现的开始的位置。初始时,count = 0,start = -1。

  2. 从左到右依次遍历str,假设遍历到i的位置的字符为char,情况分析如下:

    1)如果char是字符‘0’,此时更新start的值,如果start = -1 ,说明之前没处在发现连续的 ‘0’的阶段,那么令start = i,否则start不变。同时令count加1。

    2)如果char不是字符‘0’,此时为去掉连续 ‘0’的阶段。首先看此时count的值是否等于k,如果等于的话,说明之前出现的字符 ‘0’的个数正好为k,删除这些连续的 ‘0’;如果不等于的话,不必删除。最后令count = 0,start = -1。

    3)既然把去掉 ‘0’的时机放在了char不是字符 ‘0’的时候,那么str如果以k个 ‘0’结尾的话,这个连续的 ‘0’就不会删除,所以在最后要再次判断一下count。

  3. <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值