From 66aa44dbaa162f879bd4eacf317b88cd36cd7e0a Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Mon, 7 Jun 2021 13:11:53 +0800 Subject: [PATCH] =?UTF-8?q?1869:=E5=93=AA=E7=A7=8D=E8=BF=9E=E7=BB=AD?= =?UTF-8?q?=E5=AD=90=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=9B=B4=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ngerContiguousSegmentsOfOnesThanZeros.java | 94 +++++++++++++++++++ ...LongerContiguousSegmentsOfOnesThanZeros.md | 52 ++++++++++ 2 files changed, 146 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.java create mode 100644 src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.md diff --git a/src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.java b/src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.java new file mode 100644 index 0000000..bad22d5 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.java @@ -0,0 +1,94 @@ +//给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 fa +//lse 。 +// +// +// 例如,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' +// +// Related Topics 数组 双指针 +// 👍 7 👎 0 + +package leetcode.editor.cn; +//1869:哪种连续子字符串更长 +public class LongerContiguousSegmentsOfOnesThanZeros{ + public static void main(String[] args) { + //测试代码 + Solution solution = new LongerContiguousSegmentsOfOnesThanZeros().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +class Solution { + public boolean checkZeroOnes(String s) { + if (s.length() == 0 || !s.contains("1")) { + return false; + } + if (!s.contains("0")) { + return true; + } + int[] lengths = new int[2]; + int start0 = s.indexOf("0"); + int start1 = s.indexOf("1"); + int[] maxs = new int[2]; + char ch = '0'; + for (int i = 0; i < s.length(); i++) { + if (s.charAt(i) == ch) { + lengths[ch - '0']++; + } else { + maxs[ch - '0'] = Math.max(maxs[ch - '0'], lengths[ch - '0']); + lengths[ch - '0'] = 0; + ch = s.charAt(i); + lengths[ch - '0']++; + } + } + maxs[ch - '0'] = Math.max(maxs[ch - '0'], lengths[ch - '0']); + return maxs[1]>maxs[0]; + } +} +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.md b/src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.md new file mode 100644 index 0000000..7ad0c28 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/LongerContiguousSegmentsOfOnesThanZeros.md @@ -0,0 +1,52 @@ +

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

+ + + +

注意,如果字符串中不存在 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 。
+
+ +

 

+ +

提示:

+ + +
Related Topics
  • 数组
  • 双指针
  • \n
  • 👍 7
  • 👎 0
  • \ No newline at end of file