计数二进制子串

给你一个整数数组 nums ,统计并返回在 nums 中同时至少具有一个严格较小元素和一个严格较大元素的元素数目。

  • 输入:s = “00110011”
    输出:6
    解释:6 个子串满足具有相同数量的连续 1 和 0 :”0011”、”01”、”1100”、”10”、”0011” 和 “01” 。
    注意,一些重复出现的子串(不同位置)要统计它们出现的次数。
    另外,”00110011” 不是有效的子串,因为所有的 0(还有 1 )没有组合在一起。

  • 输入:s = “10101”
    输出:4
    解释:有 4 个子串:”10”、”01”、”10”、”01” ,具有相同数量的连续 1 和 0 。

1
2
3
4
5
6
7
8
var countBinarySubstrings = function(s) {
let arr = s.replace(/10/g, '1 0').replace(/01/g, '0 1').split(/\s/)
let n = 0
for(i=0; i< arr.length - 1; i++) {
n += Math.min(arr[i].length, arr[i + 1].length)
}
return n
};