1. 程式人生 > >696. Count Binary Substrings 計數二進制子字符串

696. Count Binary Substrings 計數二進制子字符串

cti har ati 為知 http number cut str 1.4

Give a string s, count the number of non-empty (contiguous) 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: "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: "10101"
Output: 4
Explanation: There are 4 substrings: "10", "01", "10", "01" that have equal number of consecutive 1‘s and 0‘s.

Note:

  • s.length will be between 1 and 50,000.
  • s will only consist of "0" or "1" characters.

  • 給一個字符串s,計算具有相同數字0和1的非空(連續)子字符串的數量,並且這些子字符串中的所有0和所有1都被連續分組。 發生多次的子字符串將被計數它們發生的次數。


    1. /**
    2. * @param {string} s
    3. * @return {number}
    4. */
    5. var countBinarySubstrings = function (s) {
    6. let prevRunLength = 0;
    7. let curRunLength = 1;
    8. let res = 0;
    9. for (let i = 1; i < s.length; i++) {
    10. if (s[i] == s[i - 1]) {
    11. curRunLength++;
    12. } else {
    13. prevRunLength = curRunLength;
    14. curRunLength = 1;
    15. }
    16. if (prevRunLength >= curRunLength) res++;
    17. }
    18. return res;
    19. };
    20. //console.log(countBinarySubstrings("00110011"));



    來自為知筆記(Wiz)

    696. Count Binary Substrings 計數二進制子字符串