博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串问题----去掉字符串中连续出现K个0的子串
阅读量:5079 次
发布时间:2019-06-12

本文共 1369 字,大约阅读时间需要 4 分钟。

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

  

  给定一个字符串str,和一个整数k, 如果str中正好有连续K 个'0'字符出现,把连续的 k 个 '0'去掉,返回处理后的子串。

 

  【解题思路】

  1. 定义两个变量,count表示'0'连续出现的次数,start表示连续出现的开始位置,

  2. 将去掉连续0 的时机放在了当前字符不是 0 的情况

  3. 因此对于最后可能以 0 结尾,这时没有去掉,因此最后应该对count进行进行检查是否等于k

  其时间复杂度是O(N),空间复杂度是 O(1)

package com.test;/** * Created by Demrystv. */public class removeKZeros {    public String removeKZeros(String str, int k){        if (str == null || k < 1){            return str;        }        char[] chars = str.toCharArray();        int start = -1;        int count = 0;        for (int i = 0; i < chars.length; i++) {            //首先当前字符是0            if (chars[i] == '0'){                count++;                start = start == -1 ? i : start;            }else {                //当前字符不是0,数量已经到了k,进行移除操作                if (count == k){                    while (count-- != 0){                        chars[start++] = 0; //这个0 不是字符'0',字符'0'的阿西克码是48, 这个0 的阿西克码就是0,'A00B'-->'A  B'再转换成字符串就是'AB'                    }                }                //当前字符不是0,数量不是k,说明是其他字符                count = 0;                start = -1;            }        }        //对于最后以 0 结尾的,需要再次进行判断,因为我们判断数量是否到达k 是在当前元素不是 0 的情况        if (count == k){            while (count-- != 0){                chars[start++] = 0;            }        }        return String.valueOf(chars);    }}

 

转载于:https://www.cnblogs.com/Demrystv/p/9557610.html

你可能感兴趣的文章
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>