暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据结构和算法【36】统计字符串

皮皮克克 2023-08-27
13

点击关注公众号,干货第一时间送达


也是一道字符串类型的题目,

但是,

小编在力扣上,没有找到对应的原题

各位吴彦祖和刘亦菲或是能够找到,

可以私信告诉小编。

OK,一起来看看这道题。


一、屏幕前的吴彦祖和刘亦菲们,请听题

统计字符串是什么样?

举个例子:


其实,这个统计字符串,做起来不难。

遍历的时候记录累加即可。

可是,这个题目有个扩展:


比如:


这个扩展求解起来,有点点需要注意字符的变化。

遍历过程中,会遇到 '_' 或者 数字 '1' 等。


二、解题

题意不是很难,只是coding的时候注意下细节即可。

直接看看原题和扩展的代码吧。


原题完整代码:

public class CodingDemo {

    /**
     * TODO: 字符串中的统计字符串
     * @param str
     * @return
     */

    private static String getCountingStr(String str){
        if (str == null || str.length() == 0){
            return "";
        }

        char[] ch = str.toCharArray();
        String res = String.valueOf(ch[0]);
        int num = 1;

        for (int i = 1; i < ch.length; i++) {
            if (ch[i] != ch[i-1]){
                res = concatStr(res, String.valueOf(num), String.valueOf(ch[i]));
                num = 1;
            } else {
                num++;
            }
        }
        return concatStr(res, String.valueOf(num), "");
    }

    private static String concatStr(String res, String num, String next){
        return res + "_" + num + (next.equals("") ? next : "_" + next);
    }
    
    
    public static void main(String[] args) {

        String str = "aaabbadddffc";
        System.out.println(getCountingStr(str));
    }
}


输出:

D:\java\bin\java.exe
a_3_b_2_a_1_d_3_f_2_c_1

扩展完整代码:

public class CodingDemo {

    /**
     * TODO; 统计字符串指定坐标的字符
     * @param str
     * @param index
     * @return
     */

    private static char getCharAt(String str, int index){
        if (str == null || str.length() == 0){
            return 0;
        }

        char[] ch = str.toCharArray();
        boolean stage = true//true 遇到字符串,false 遇到连续字符串
        int sum = 0;
        int num = 0;
        char cur = 0;

        for (int i = 0; i < ch.length; i++) {
            if (ch[i] == '_'){
                //要么是 a_
                //要么是 100_b
                stage = !stage;
            } else if (stage){
                //阶段切换,统计上一个字符出现的次数,判断是否在index 中
                sum += num;
                if (sum > index){
                    return cur;
                }
                cur = ch[i];
                num = 0;
            } else {
                num = num*10 + (ch[i] - '0');
            }
        }
        return sum+num > index ? cur : '0';
    }

    
    public static void main(String[] args) {

        String str = "a_3_b_2_a_1_d_3_f_2_c_1";
        System.out.println(getCharAt(str, 6));
    }
}


输出:

D:\java\bin\java.exe
d



结束语:
Ok,到此为止,就是本篇文章的全部内容了。
该文章主要讲了 数据结构和算法: 统计字符串。
如果各位有不懂的地方,欢迎发消息给小编,小编会进行详细地解答。
最后,请屏幕前的各位吴彦祖和刘亦菲们,动动你们的小手,给小编一个

文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论