返回介绍

solution / 1700-1799 / 1784.Check if Binary String Has at Most One Segment of Ones / README

发布于 2024-06-17 01:03:14 字数 2623 浏览 0 评论 0 收藏 0

1784. 检查二进制字符串字段

English Version

题目描述

给你一个二进制字符串 s ,该字符串 不含前导零

如果 s 包含 零个或一个由连续的 '1' 组成的字段 ,返回 true​​​ 。否则,返回 false

 

示例 1:

输入:s = "1001"
输出:false
解释:由连续若干个 '1' 组成的字段数量为 2,返回 false

示例 2:

输入:s = "110"
输出:true

 

提示:

  • 1 <= s.length <= 100
  • s[i]​​​​ 为 '0''1'
  • s[0]'1'

解法

方法一:0 后面不能有 1

注意到字符串 $s$ 不含前导零,说明 $s$ 以 '1' 开头。

若字符串 $s$ 存在 "01" 串,那么 $s$ 就是形如 "1…01…" 的字符串,此时 $s$ 出现了至少两个连续的 '1' 片段,不满足题意,返回 false

若字符串 $s$ 不存在 "01" 串,那么 $s$ 只能是形如 "1..1000…" 的字符串,此时 $s$ 只有一个连续的 '1' 片段,满足题意,返回 true

因此,只需要判断字符串 $s$ 是否存在 "01" 串即可。

时间复杂度 $O(n)$。其中 $n$ 为字符串 $s$ 的长度。空间复杂度 $O(1)$。

class Solution:
  def checkOnesSegment(self, s: str) -> bool:
    return '01' not in s
class Solution {
  public boolean checkOnesSegment(String s) {
    return !s.contains("01");
  }
}
class Solution {
public:
  bool checkOnesSegment(string s) {
    return s.find("01") == -1;
  }
};
func checkOnesSegment(s string) bool {
  return !strings.Contains(s, "01")
}
function checkOnesSegment(s: string): boolean {
  let pre = s[0];
  for (const c of s) {
    if (pre !== c && c === '1') {
      return false;
    }
    pre = c;
  }
  return true;
}
impl Solution {
  pub fn check_ones_segment(s: String) -> bool {
    !s.contains("01")
  }
}

方法二

function checkOnesSegment(s: string): boolean {
  return !s.includes('01');
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文