首页 > 试题广场 >

求最大连续bit数

[编程题]求最大连续bit数
  • 热度指数:148280 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的十进制整数 n,求解其二进制表示中,最长连续 1 段的长度。

输入描述:
\hspace{15pt}输入一个十进制整数 n \left(1 \leqq n \leqq 5 \times 10^5\right)


输出描述:
\hspace{15pt}输出一个整数,表示 n 的二进制表示中,最长连续 1 段的长度。
示例1

输入

200

输出

2

说明

\hspace{15pt}在这个样例中,十进制 (200)_{10} 等于二进制 (11\,001\,000)_{2},其中最长连续 1 段的长度为 2
示例2

输入

1023

输出

10

说明

\hspace{15pt}在这个样例中,十进制 (1023)_{10} 等于二进制 (1\,111\,111\,111)_{2}

备注:
\hspace{15pt}本题数据已规范为单组询问(2025/01/15)。
头像 牛客290975006号
发表于 2021-09-24 17:09:40
split()一下之后用下set去掉多个分割出来的空值排个序就好了吧 while True: try: x = int(input()) byte_x = bin(x)[2:] list1 = sorted(list(set(byte_x.sp 展开全文
头像 牛客400911017号
发表于 2021-11-10 22:01:15
用函数转换二进制后,直接用0进行split,然后找到最大长度。 import java.util.Scanner; public class Main {     public static void main(String args[]) {     展开全文
头像 摸鱼学大师
发表于 2021-10-31 17:11:45
题目的主要信息: 求一个int类型数字对应的二进制数字中1的最大连续数 进阶要求:时间复杂度:O(log2n)O(log_2n)O(log2​n),空间复杂度:O(1)O(1)O(1) 方法一:连除法 具体做法: 将十进制转换成二进制的方法可以用连除取余法,那我们不断连除2,每次都取余2得到最后 展开全文
头像 不错就是对
发表于 2022-03-11 10:13:38
HJ86 求最大连续bit数 思路: step1:输入一个int型整数,并转为二进制数; step2:将二进制数转换为字符串形式; step3:对a的长度逐一遍历;从大到小开始对字符'1'相乘,如果在b中,直接打印并且break 代码如下: while True: try: 展开全文
头像 为什么机器不学习
发表于 2021-01-09 21:34:06
java直接用位运算&,用当前数字和1做“&”操作,如果结果是1,说明此时的二进制第一位为1,然后右移一位,直至数字为0。注意java的>>是有符号右移,也就是说,负数用>>右移的话,会在左侧补1而不是0,这就会影响最终对1的计数。所以这里我们要使用无符号右移 展开全文
头像 王琨琨
发表于 2021-11-10 15:15:18
#include<stdio.h> int main()  {     int n;     while (scanf("%d", &n)  展开全文
头像 江泽政
发表于 2021-11-11 14:13:57
Python3 解题思路 try: s = input() ## 数字格式-> 二元格式 -> 清除非数字 -> 零作为间隔符号 string = bin(int(s)).replace("0b", "").split("0" 展开全文
头像 青菜一号
发表于 2022-04-19 21:26:13
看起来没有用split()的精妙,但效率似乎更高。 while True: try: x=int(input()) str1=bin(x) count=0 max_count=0 for i in str1: 展开全文
头像 勇敢牛牛,害怕困难
发表于 2021-12-22 22:19:22
解题思路2:用0分割字符串,求分割后字符串的最大长度。 Pythonic while True: try: a = int(input()) b = str(bin(a)[2:]) c = b.split('0') l = [] 展开全文
头像 星空(-:
发表于 2022-01-21 17:00:14
function solution(num){ let str = num.toString(2); let arr=str.split('0') let result = 0 for(let i=0; i<arr.length; i++){ 展开全文