696.计数二进制子串
链接:696.计数二进制子串
难度:Easy
标签:双指针、字符串
简介:给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是组合在一起的。
题解 1 - typescript
- 编辑时间:2020-08-10
- 执行用时:96ms
- 内存消耗:44.5MB
- 编程语言:typescript
- 解法介绍:遍历后获取每次 0 或 1 同时出现的次数。
function countBinarySubstrings(s: string): number {
  const arr: number[] = [];
  let count = 0;
  let prev = '';
  for (const c of s) {
    if (c !== prev) {
      arr.push(count);
      count = 1;
    } else {
      count++;
    }
    prev = c;
  }
  arr.push(count);
  let ans = 0;
  for (let i = 0, l = arr.length; i < l - 1; i++) {
    const num1 = arr[i];
    const num2 = arr[i + 1];
    ans += Math.min(num1, num2);
  }
  return ans;
}