首页 > 试题广场 >

求最大连续bit数

[编程题]求最大连续bit数
  • 热度指数:139238 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1

数据范围:数据组数:
进阶:时间复杂度:,空间复杂度:

输入描述:

输入一个int类型数字



输出描述:

输出转成二进制之后连续1的个数

示例1

输入

200

输出

2

说明

200的二进制表示是11001000,最多有2个连续的1。  
import sys
import re
for line in sys.stdin:
    digits = int(line.strip())
    binary = bin(digits)
    pattern = re.compile(r'1+')
    max_length=0
    for i in pattern.findall(binary):
        max_length = max(max_length, len(i))
    print(max_length)

发表于 2021-07-06 00:20:50 回复(0)
while True:
    try:
        str1 = int(input())# 转换为int
        str2 = str(bin(str1))#转换为二进制
        str2=str2.replace('0b', "")#去除前缀0b
        str2 = str2.replace('0', " ")#替换全部0为空格
        str2 = str2.split()#以空格区分项
        str2 = list(map(int, str2))#全部项转换为int
        str2.sort(reverse= True)#升序排序
        print(len(str(str2[0])))#第一个的长度就是了~~~
    except:
        break

发表于 2021-07-01 13:02:34 回复(0)
while True:
    try:
        list1=format(int(input()),'b').split('0')
        m=0
        for each in list1:
            n=len(each)
            m=n if n>m else m
        print(m)
    except:
        break
发表于 2021-03-17 16:11:45 回复(0)
list=[]
while True:
    try:
        list.append(input())
    except:
        break
for each in list:
    num=int(each)
    b_num=bin(num)
    j=0;list1=[]
    for each in b_num:
        if each=='1':
            j=j+1
            list1.append(j)
        else:
            j=0
    print(max(list1))
发表于 2021-03-08 17:38:14 回复(0)
哎,,没那么好使的脑子,继续学习吧

def getResult(n):
    binaryStr = bin(n)
    temp_list = []
    for i in range(len(binaryStr)):
        if binaryStr[i] == "1":
            for j in range(i,len(binaryStr)):
                if "0" not in binaryStr[i:j+1]:
                    maxNumber = j-i+1
                    temp_list.append(maxNumber)
    return max(temp_list)

try:
    while True:
        a = input()
        print(getResult(int(a)))
except:
    pass

发表于 2021-03-04 00:25:41 回复(0)
while True:
    try:
        s = str(bin(int(input()))).lstrip("0b")
        count = 0
        temp = []
        i = 0
        for i in range(len(s)):
            if i == 0 and s[i] == "1":
                count += 1
                if len(s) == 1:
                    temp.append(count)
                continue
            if s[i] == "1" and s[i - 1] == "0":
                count += 1

                temp.append(count)
            elif s[i] == "1" and s[i - 1] == "1":
                count += 1

                temp.append(count)
            elif s[i] == "0":
                temp.append(count)
                count = 0
        print(max(temp))
    except:
        break

发表于 2021-02-26 14:18:08 回复(0)
# 采用正则,在进行排序
import re

while True:
    try:
        a = bin(int(raw_input()))[2:]
        r = re.findall("1+", a)
        r.sort(key=len)
        print len(r[-1])
    except:
        break
发表于 2021-02-23 14:38:42 回复(0)
while True:
    try:
        a=int(input())
        b=str(bin(a))
        res=1
        ans=1
        i=0
        while i <len(b)-1:
            if b[i]=='1' and b[i+1]=='1':
                res+=1
                ans=max(ans,res)
            else:
                res=1
            i+=1
        print(ans)
    except:
        break

编辑于 2020-12-19 12:08:00 回复(0)
while True:
    try:
        bi = bin(int(input())).split('0')
        a = 0
        for i in bi:
            a = max(i.count('1'),a)
        print(a)
    except:
        break

编辑于 2020-12-14 23:03:36 回复(0)
import re
import sys


for s in sys.stdin:
    b_n = bin(int(s))
    matches = re.findall(r"1+", b_n)
    print(max(map(len, matches)))

发表于 2020-12-13 00:30:30 回复(0)
# 思路:二进制字符串中只有1和0两种字符,那么我们以‘0’作为分隔符(刀)来切割二进制串。
# 遇到每个'0'就切一刀,若刀和刀之间没有内容,则为空字符串,也包含在结果当中。
# 如:字符串'111000101100111111'.split('0')得到['111', '', '', '1', '11', '', '111111']
# 我们只需统计结果列表中最大的长度是几,即为本题答案。

while True:
    try:
        ten = int(input().strip())
        bin = format(ten, 'b')
        print(max(map(len, bin.split('0'))))
    except:
        break

发表于 2020-12-06 11:14:17 回复(0)
# 2020年11月14日21:33:10
while True:
    try:
        num = int(input())
        bins = str(bin(num))
#       依次计算连续i个1是否存在
        for i in range(len(bins)):
#       直到检测到不存在连续的1时,输出个数i-1
            if (i * "1") not in bins:
                print(i-1)
                break
    except:
        break
        

编辑于 2020-11-14 23:21:56 回复(0)
while True:
    try:
        data = int(input())
    except:
        break
    b = bin(data)[2:]
    print(max([_.count("1") for _ in b.split("0")]))

发表于 2020-10-09 18:00:50 回复(0)
while True:
    try:
        print(max(map(len,bin(int(input()))[2:].split('0'))))
    except:
        break


py一行代码
发表于 2020-09-01 16:12:37 回复(1)
while 1:
    try:
        n=int(input())
        binn=bin(n)
        l=0
        li=[]
        for i in str(binn):
            if i=='1':
                l+=1
            else:
                l=0
            li.append(int(l))
        num=max(li)
        print(num)
    except:
        break

发表于 2020-08-19 16:04:10 回复(0)
while 1:
    try:
        a=bin(int(input())).replace("0b","").split("0")
        print(len(max(a,key=len)))
    except:
        break


发表于 2020-08-17 20:17:06 回复(0)
while True:
    try:
        n = int(input())
        #转为二进制
        string = bin(n)
        #在0处拆开,并取第3位及以后,因为前两位是0b
        n = string[2:].split('0')
        weishu = [len(strs) for strs in n]
        print(max(weishu))
    except:
        break

发表于 2020-08-14 10:57:50 回复(0)
while True:
    try:
        import re
        a=int(input())
        c=re.findall(r"1{1,}",bin(a))
        print (max(list(map(len,c))))
    except:
        break
编辑于 2020-08-11 15:55:01 回复(1)
def calLong(n:int):
    max_value = 0
    temp = 0
    while n > 0:
        temp = temp + 1 if n&1 else 0
        n >>= 1
        max_value = max(max_value, temp)
    print(max_value)
        
def main():
    while True:
        try:
            n = int(input().strip())
            calLong(n)
        except:
            break

            
if __name__ == "__main__":
    main()

发表于 2020-08-10 08:50:55 回复(0)
while True:
    try:
        a = int(input())
        b = bin(a)[2:]
        c = b.split('0')
        max = 0
        for i in c:
            if len(i) > max:
                max = len(i)

        print(max)

    except:
        break

编辑于 2020-07-31 15:09:07 回复(0)

问题信息

难度:
44条回答 28337浏览

热门推荐

通过挑战的用户

查看代码