给一个正整数n,找到并返回n的二进制表示中两个1之间最长的距离,若只有1个1,则返回0
例如:
输入:8 二进制为1000
输出:0
输入:3
输出:1
int binaryGap(int n){
int last=-1,ans=0; //防止直接赋值
for(int i=0;i<32;i++){
if((n>>i)&1){ //判断倒数第(i+1)位是否为1
if(last >=0) ans=(i-last)>=ans?(i-last):ans; //始终为最大值
last=i; //更新间距
}
}
return ans;
}