All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0601_0700.s0696_count_binary_substrings.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0601_0700.s0696_count_binary_substrings;

// #Easy #String #Two_Pointers #2022_03_22_Time_5_ms_(100.00%)_Space_42.5_MB_(91.17%)

/**
 * 696 - Count Binary Substrings\.
 *
 * Easy
 *
 * Give a binary string `s`, return the number of non-empty substrings that have the same number of `0`'s and `1`'s, and all the `0`'s and all the `1`'s in these substrings are grouped consecutively.
 *
 * Substrings that occur multiple times are counted the number of times they occur.
 *
 * **Example 1:**
 *
 * **Input:** s = "00110011"
 *
 * **Output:** 6
 *
 * **Explanation:**
 *
 *     There are 6 substrings that have equal number of consecutive 1's and 0's: "0011", "01", "1100", "10", "0011", and "01".
 *     Notice that some of these substrings repeat and are counted the number of times they occur.
 *     Also, "00110011" is not a valid substring because all the 0's (and 1's) are not grouped together. 
 *
 * **Example 2:**
 *
 * **Input:** s = "10101"
 *
 * **Output:** 4
 *
 * **Explanation:** There are 4 substrings: "10", "01", "10", "01" that have equal number of consecutive 1's and 0's. 
 *
 * **Constraints:**
 *
 * *   1 <= s.length <= 105
 * *   `s[i]` is either `'0'` or `'1'`.
**/
public class Solution {
    public int countBinarySubstrings(String s) {
        int start = 0;
        int ans = 0;
        char[] arr = s.toCharArray();
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] != arr[i - 1]) {
                ans++;
                start = i - 1;
            } else if (start > 0 && arr[--start] != arr[i]) {
                // if start isn't 0, we may still have a valid substring
                ans++;
            } else {
                // if not, then reset start to 0
                start = 0;
            }
        }
        return ans;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy