我有一个简单的函数,可以计算长变量中有多少个0,其中一些正整数的二进制表示形式。但是我需要实现一个新功能,该功能将返回最长连续序列0s的长度...
计数为0的功能:
int nullSeq(long binn)
{
int count=0;
if(binn==0)
return 1;
while(binn!=0)
{
if ((binn & 1) == 0)
{
count++;
}
binn=binn >> 1;
}
return count;
}
F.e。数字559。559的二进制表示形式为1000101111。0计数函数将返回4。最长的连续零序列应为3。直到现在,我不自觉地将所有零的值用作最长序列。它工作了一些数字。但是我需要实现一个新函数,该函数将找到最长的零序列。
答案 0 :(得分:3)
您实际上是在计算找到的零的总数。找到0时需要增加计数器,找到1时需要将计数器设置为0,并且必须跟踪计数器的最大值。
int nullSeq(long binn)
{
int count=0, maxcount=0;
if(binn==0) {
return 1;
}
while(binn!=0) {
if ((binn & 1) == 0) {
count++;
if (count > maxcount) {
maxcount = count;
}
} else {
count = 0;
}
binn=binn >> 1;
}
return maxcount;
}