输入一个字符串,输出该字符串中连续且字符相同的区块的最大值以及所对应的编号

已知一条区块链是由若干个连续区块组成的,每个区块都对应一个不唯一的编号bi,(bi在0-9之间),现输入一个字符串代表一个区块链,请找出该区块链中连续编号相同的区块长度的最大值以及对应的编号。如果存在若干个长度相同的结果,则输出最先出现的区块编号。

例如:“11100011”代表一个区块链,其中有8个区块,第一个区块为1,第二个区块为1,第三个区块为1,第四个区块为0,以此类推。则最长连续且编号相同的区块为第1,2,3和第4,5,6区块即“111”和“000”,长度都为3,编号分别为1和0,又因为最先出现的优先,所以最终的结果为:3 1

以下是程序:

import java.util.Scanner;

public class TestDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char c = str.charAt(0);//初始值
        int count = 1;//统计连续相同字符的个数
        int strSame = 1;// 初始连续相同个数为1
        // 遍历字符串
        for (int i = 0; i < str.length()-1; i++) {
            //判断下一个字符是否和当前字符相同
            if(str.charAt(i) == str.charAt(i+1)){
                strSame++;
                //判断当前连续相同的字符总数是否大于count
                if(strSame > count){
                    // 如果strSame大于count则说明有更多的连续相同的区块出现
                    count = strSame;
                    // 记录当前区块的编号
                    c = str.charAt(i);
                }
            }else{
                //如果下一个区块和当前区块不相同,则重制strSame
                strSame = 1;
            }
        }
        System.out.println(count+" "+c);
    }
}

猜你喜欢

转载自blog.csdn.net/LSW_JAVADP/article/details/102767171