【LeetCode】1869. 哪种连续子字符串更长

1869. 哪种连续子字符串更长

难度:简单

题目

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

  • 例如,s = "110100010" 中,由 1 组成的最长连续子字符串的长度是 2 ,由 0 组成的最长连续子字符串的长度是 3

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

示例 1:

输入:s = "1101"
输出:true
解释:
由 1 组成的最长连续子字符串的长度是 2:"1101"
由 0 组成的最长连续子字符串的长度是 1:"1101"
由 1 组成的子字符串更长,故返回 true 。

示例 2:

输入:s = "111000"
输出:false
解释:
由 1 组成的最长连续子字符串的长度是 3:"111000"
由 0 组成的最长连续子字符串的长度是 3:"111000"
由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false 。

示例 3:

输入:s = "110100010"
输出:false
解释:
由 1 组成的最长连续子字符串的长度是 2:"110100010"
由 0 组成的最长连续子字符串的长度是 3:"110100010"
由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false 。

提示:

  • 1 <= s.length <= 100
  • s[i] 不是 '0' 就是 '1'

个人题解

思路:

遍历 + 记录

class Solution {
    public boolean checkZeroOnes(String s) {
        int maxOneL = 0;
        int maxZeroL = 0;
        int count = 0;
        boolean oneFlag = false;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '0' && oneFlag || s.charAt(i) == '1' && !oneFlag) {
                maxOneL = oneFlag ? Math.max(maxOneL, count) : maxOneL;
                maxZeroL = oneFlag ? maxZeroL : Math.max(maxZeroL, count);
                count = 1;
                oneFlag = !oneFlag;
            } else {
                count++;   
            }
        }
        maxOneL = oneFlag ? Math.max(maxOneL, count) : maxOneL;
        maxZeroL = oneFlag ? maxZeroL : Math.max(maxZeroL, count);
        return maxOneL > maxZeroL;
    }
}

可参考题解

class Solution {
    public boolean checkZeroOnes(String s) {
        int n = s.length();
        int i = 0, oneMax = 0, zeroMax = 0;
        while(i < n) {
            int oneLength = 0, zeroLength = 0;
            while(i < n && s.charAt(i) == '1') {
                oneLength++;
                i++;
            }
            oneMax = Math.max(oneMax, oneLength);
            while(i < n && s.charAt(i) == '0') {
                zeroLength++;
                i++;
            }
            zeroMax = Math.max(zeroMax, zeroLength);
        }
        return oneMax > zeroMax;
    }
}

你可能感兴趣的:(LeetCode,leetcode,算法)