AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0022. 最长连续相同比特

简单通过率 41% · 提交 273 · 通过 111
字符串模拟枚举

在小慕的编程项目中,他需要分析一组二进制数据流,每个数据流由一串比特序列(二进制)组成,而不同序列的稳定性取决于它们最长的连续相同位(即连续的`0`或`1`)。 小慕试图优化这些数据流,以提高系统的运行效率,而项目导师则希望找到最稳定的数据模式。你的任务是,给定一个整数 `n`,计算其中最长的连续数字(0或1)的个数,帮助小慕完成项目分析!

提示:带虚线的词点一下有通俗解释。

输入描述

一个整数 `n`,其中 `0 <= n < 2^{32}`。

输出描述

一个整数,表示 `n` 的二进制表示中最长的连续 `0` 或 `1` 的个数。

示例

示例 1

输入

3

输出

2

说明:`3` 的二进制表示为 `11`,最长连续数字为 `11`,长度为 `2`。

示例 2

输入

17

输出

3

说明:`17` 的二进制表示为 `10001`,最长连续数字为 `000`,长度为 `3`。

示例 3

输入

0

输出

1

说明:`0` 的二进制表示为 `0`,最长连续数字的个数为 `1`。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
最长连续数字示例 n=3 → 二进制: 1 1 1 1 最长连续 = 2 n=17 → 二进制: 1 0 0 0 1 1 0 0 0 1 最长连续 = 3 n=0 → 二进制: 0 0 最长连续 = 1
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「最长连续相同比特」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。