华为机试HJ86:求最大连续bit数

简介: 华为机试HJ86:求最大连续bit数

题目描述:

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


本题含有多组样例输入。

输入描述:

输入一个byte数字

输出描述:

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

示例:

输入:

3

5


输出:

2

1


说明:

3的二进制表示是11,最多有2个连续的1。

5的二进制表示是101,最多只有1个连续的1。

解题思路:

这题用bitset将数字转换为二进制格式,再转为string,分析连续1的个数只需要用while循环,即可实现。

测试代码:

#include <iostream>
#include <vector>
#include <bitset>
using namespace std;
int getone(int num)
{
    bitset<8> t(num);
    string s=t.to_string();
    int max=0;
    for(int i=0;i<s.size();++i)
    {
        int len=0;
        while(s[i]=='1')
        {
            len++;
            i++;
        }
        if(len>max)
            max=len;
    }
    return max;
}
int main()
{
    int num;
    while(cin>>num)
    {
        cout<<getone(num)<<endl;
    }
    return 0;
}


相关文章
|
10月前
【每日一题Day202】LC1015可被 K 整除的最小整数 | 模运算
【每日一题Day202】LC1015可被 K 整除的最小整数 | 模运算
83 2
|
10月前
【每日一题Day357】LC1155掷骰子等于目标和的方法数 | dp
【每日一题Day357】LC1155掷骰子等于目标和的方法数 | dp
73 0
|
10月前
【每日一题Day299】LC2235两整数相加
【每日一题Day299】LC2235两整数相加
41 0
|
容器
华为机试HJ80:整型数组合并
华为机试HJ80:整型数组合并
256 1
华为机试HJ58:输入n个整数,输出其中最小的k个
华为机试HJ58:输入n个整数,输出其中最小的k个
|
容器
华为机试HJ10:字符个数统计
华为机试HJ10:字符个数统计
|
存储
华为机试HJ15:求int型正整数在内存中存储时1的个数
华为机试HJ15:求int型正整数在内存中存储时1的个数
|
算法 测试技术 C++
剑指offer(C++)-JZ20:表示数值的字符串(算法-模拟)
剑指offer(C++)-JZ20:表示数值的字符串(算法-模拟)
华为机试HJ91:走方格的方案数
华为机试HJ91:走方格的方案数
163 0
华为机试HJ84:统计大写字母个数
华为机试HJ84:统计大写字母个数

热门文章

最新文章