zoukankan      html  css  js  c++  java
  • [算法]去掉字符串中连续出现的k个0子串

    题目:

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

    举例:

    str=”A00B”,k=2,返回“AB”

    str=”A0000B000”,k=3,返回“A0000B”

    思路:

    两个变量:

    1.count表示连续0的个数,初始值为0

    2.start表示连续0的起点,初始值为-1

    使用字符串中从未出现的字符,这里使用’@‘,目的是最后一步进行正则替换

    iii

    程序:

    public static String removeKZeros(String str,int k){
            if (str == null||k<1) {
                return str;
            }
            char[] chas=str.toCharArray();
            int count=0,start=-1;
            for (int i=0;i!=chas.length;i++){
                if (chas[i]=='0'){
                    count++;
                    start=start==-1?i:start;
                }
                else {
                    if (count==k){
                        while (count--!=0)
                            chas[start++]='@';
                    }
                    count=0;
                    start=-1;
                }
            }
            if (count==k){
                while (count--!=0)
                    chas[start++]='@';
            }
            return String.valueOf(chas).replaceAll("\@+","");
        }
  • 相关阅读:
    [Luogu] 封锁阳光大学
    [other] Div
    [USACO11DEC] 牧草种植Grass Planting
    [Luogu] 仓鼠找sugar
    [USACO15DEC]最大流Max Flow
    [noip-2013] 货车运输
    [模板] 普通平衡树
    [Luogu] 树链剖分
    [ZJOI2008] 树的统计Count
    大组合数取模
  • 原文地址:https://www.cnblogs.com/xiaomoxian/p/5157991.html
Copyright © 2011-2022 走看看