当前位置: 首页 > news >正文

LeetCode //C - 696. Count Binary Substrings

696. Count Binary Substrings

Given 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 . l e n g t h < = 1 0 5 1 <= s.length <= 10^5 1<=s.length<=105
  • s[i] is either ‘0’ or ‘1’.

From: LeetCode
Link: 696. Count Binary Substrings


Solution:

Ideas:
  • prev tracks the length of the previous group (e.g., “00” → prev = 2).

  • curr tracks the length of the current group (e.g., “11” → curr = 2).

  • Whenever the character changes (s[i] != s[i-1]), it means a new group starts:

    • Add min(prev, curr) to the result because only that many valid substrings can be formed.

    • Then update prev = curr and reset curr = 1.

  • At the end, add the last min(prev, curr) again.

Code:
int countBinarySubstrings(char* s) {int prev = 0, curr = 1;int count = 0;for (int i = 1; s[i]; i++) {if (s[i] == s[i - 1]) {curr++;} else {count += prev < curr ? prev : curr;prev = curr;curr = 1;}}count += prev < curr ? prev : curr;return count;
}

相关文章:

  • 多模态大语言模型arxiv论文略读(五十七)
  • CSS 预处理器 Sass
  • 【SAP】FISL的应用
  • Android Compose 物联网(IoT)UI 组件库封装指南
  • 《Qt C++ 项目中升级 GCC 版本的完整指南》
  • 【JavaScript】性能优化:打造高效前端应用
  • 如何在WORD WPS中输入英语音标 批量给英语标注音标
  • 基于STM32的智能摇头风扇设计(WIFI+语音控制)
  • 【计算机视觉】三维重建: MVSNet:基于深度学习的多视图立体视觉重建框架
  • npm pnpm yarn 设置国内镜像
  • 音视频开发成长之路与音视频知识总结
  • 如何解决 403 错误:请求被拒绝,无法连接到服务器
  • 介绍 PHP-FPM 和 Python WSGI
  • 【c++】模板详解
  • PyTorch学习之张量(Tensor)(一)
  • 嵌入式硬件篇---STM32F103C8T6STM32F103RCT6
  • 用单目相机和apriltag二维码aruco实现单目定位
  • 小程序滚动条隐藏(uniapp版本)
  • CSS元素动画篇:基于当前位置的变换动画(合集篇)
  • Spring Boot 微服务打包为 Docker 镜像并部署到镜像仓库实战案例
  • 世界银行最新营商环境体检单:59个测评点,上海22项达全球最优水平
  • 短剧剧组在贵州拍戏突遇极端天气,演员背部、手臂被冰雹砸伤
  • 科普|治疗腰椎间盘突出症,筋骨平衡理论如何提供新视角?
  • 下达专项资金、党政主官田间调研……全国多地力保夏粮稳收
  • 格桑花盛放上海,萨迦艺术团襄阳公园跳起藏族舞
  • 韩国代总统、国务总理韩德洙宣布辞职