1,题目要求
Given a positive integer N, find and return the longest distance between two consecutive 1’s in the binary representation of N.
If there aren’t two consecutive 1’s, return 0.
对于一个二进制数,求连续的两个1之间的距离的最大值。
2,题目思路
首先,给定的数字是十进制的,因此需要一定的方法将其转化为二进制的形式。对于这道题,当我们在按位转换二进制时,依次对两个1之间的最大的值进行记录。counter是-32,是因为N可能会很大,因此取counter为-32.
3,程序源码
class Solution {
public:
int binaryGap(int N) {
int res = 0, counter = -32;
while(N)
{
if(N&1)
{
res = max(res, counter);
counter = 0;
}
N = N>>1;
counter++;
}
return res;
}
};