华为机试HJ86:求最大连续bit数
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ86:求最大连续bit数相关的知识,希望对你有一定的参考价值。
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
题目描述:
求一个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;
}
以上是关于华为机试HJ86:求最大连续bit数的主要内容,如果未能解决你的问题,请参考以下文章