求最大连续bit数

求最大连续bit数_牛客网

https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2?tpId=37&tqId=21309&rp=0&ru=/ta/huawei&qru=/ta/huawei/question-ranking

//C++://
#include <iostream>
using namespace std;
int main(){
    int n;
    while(cin >> n){
        int k=0;
        for(k=0;n!=0;k++){//遇到进制的问题,多考虑用位运算
            n=n&(n<<1);//求n与n移位后按位与的结果,如果连续的1的个数为1,则更新后的n为0;
        }//如果有多个连续的1,则按位与之后其他位都为0,而连续1的个数减1;依次循环,直到n为0,k记录了移位多少次,即为连续1的个数
        cout << k <<endl;
    }
    return 0;
}
#python3:#
while True:
    try:
        n=bin(int(input()))[2:]#将输入数字转换为二进制,注意前两位为0b代表二进制
        s=n.split("0")#按字符串0分片拷贝n
        length=0
        for i in s:
            if len(i)>length:#考察每一个非零字符串的长度
                length=len(i)#更新长度计数
        print(length)
    except:
        break




全部评论
while True: try: print(max(map(len,("{:08b}".format(int(input()))).split("0")))) except: break
点赞 回复 分享
发布于 2020-09-10 19:30
请问为什么都要加个while true呢
点赞 回复 分享
发布于 2020-08-15 14:00
问一下,那个输入的n为什么要定义成int型的?题目说了是字节,定义成char不就够了嘛。可是我定义成char的有错误是什么原因呢?
点赞 回复 分享
发布于 2020-06-29 11:03

相关推荐

评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务