1784. Check if Binary String Has at Most One Segment of Ones

Given a binary string s ​​​​​without leading zeros, return true​​​ if s contains at most one contiguous segment of ones. Otherwise, return false.

 

Example 1:

Input: s = "1001"
Output: false
Explanation: The ones do not form a contiguous segment.

Example 2:

Input: s = "110"
Output: true

 

Constraints:

  • 1 <= s.length <= 100
  • s[i]​​​​ is either '0' or '1'.
  • s[0] is '1'.

1784. Check if Binary String Has at Most One Segment of Ones
struct Solution;

impl Solution {
    fn check_ones_segment(s: String) -> bool {
        let mut one = false;
        let mut count = 0;
        for c in s.chars() {
            if c == '1' {
                one = true;
            } else {
                if one {
                    count += 1;
                }
                one = false;
            }
        }
        if one {
            count += 1;
        }
        count <= 1
    }
}

#[test]
fn test() {
    let s = "1001".to_string();
    let res = false;
    assert_eq!(Solution::check_ones_segment(s), res);
    let s = "110".to_string();
    let res = true;
    assert_eq!(Solution::check_ones_segment(s), res);
}