【LeetCode-easy】1869. 哪种连续子字符串更长(Java)

给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。

例如,s = "110100010" 中,由 1 组成的最长连续子字符串的长度是 2 ,由 0 组成的最长连续子字符串的长度是 3 。
注意,如果字符串中不存在 0 ,此时认为由 0 组成的最长连续子字符串的长度是 0 。字符串中不存在 1 的情况也适用此规则。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longer-contiguous-segments-of-ones-than-zeros
 

解法:

import java.net.StandardSocketOptions;

public class Solution1 {
    public static boolean checkZeroOnes(String s) {
        int max1=0;//表示1的最长字串
        int max0=0;//表示0的最长字串
        int len1=0;//统计1的子串长度
        int len0=0;//统计0的子串长度
        //遍历整个字符串s的每个字符
        for(int i=0; i < s.length(); i ++){
            //若当前字符为1
            if(s.charAt(i)=='1'){
                len1++;//统计1的子串长度加1
                len0 = 0;//并且清空统计0的子串记录(因为每次遇到不同就要重新数)
                if (len1 > max1){//如果统计1的子串长度大于记录的最大子串1
                    max1 = len1;//保存这个记录
                }

            }else{
                len0++;//统计0的子串长度加1
                len1=0;//并且清空统计1的子串记录
                if(len0 > max0){//如果统计0的子串长度大于记录的最大子串0
                    max0 =len0;//保存这个记录
                }

            }
        }
        //1最大字串是否大于0最大字串、是则返回true、否则返回false
        return max1 > max0 ;
    }
    //测试
    public static void main(String[] args) {
        boolean test = checkZeroOnes("11010011100");
        System.out.print(test);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41950078/article/details/117534114