获取字符串最长连续次数

字符串最长连续次数 字符串的格式为str = “123453344556565456”,不能有空格或标点字符

public static int charMaxSize(String str, char c) {
        // 判断字符串是否为空 或者 是否包含 c
        if (isEmpty(str) || !str.contains(String.valueOf(c))) {
            return 0;
        }
        int max = 0;
        char[] charArray = str.toCharArray();
        int size = charArray.length;
        for (int i = 0; i < size; i++) {
            // 判断当前最大的连续次数是否大于剩余次数, 如果大于剩余次数 或者 当前i大于数组的长度, 则没必要再去循环判断
            if (max >= size - i || i >= size) {
                return max;
            }
            // 获取当前第i位起的连续字符数
            int charMaxSizeSub = charMaxSizeSub(charArray, c, i, size);
            // 当前连续字符串和max进行比较,并赋值给max
            max = max > charMaxSizeSub ? max : charMaxSizeSub;
            // 对i = i + 连续字符 (连续字符内没必要循环)
            i += charMaxSizeSub > 0 ? charMaxSizeSub - 1 : 0;
            // 或者这样写(不影响结果),当结束后,那么下一个肯定不符合
            // 所以可以多加1
            // i += charMaxSizeSub;

        }
        return max;
    }
 /**
     * 获取从i起的最长连续
     */
    private static int charMaxSizeSub(char[] charArray, char c, int start, int length) {
        int size = 0;
        for (int i = start; i < length; i++) {
            // 若求非N连续次数, 则改为 !=c 即可
            if (charArray[i] == c) {
                size++;
            } else {
                break;
            }
        }
        return size;
    }

因为遇到的都是用数字表达的数组 所以这里引用了正则表达式作为判断,将逗号去掉再组成一个字符串,比如4最长连续次数,则如下图

 String newString = String.valueOf(sitLyNumber).replaceAll("[^0-9]", "");
//每日最长连续坐卧时长
                int sitLie = charMaxSize(newString, '4');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值