693.交替位二进制数
题目描述是输入一个数 判断二进制位数 有无连续的数
1.我们可以根据统计二级制中1的个数来进行变形做本题,先定义一个当前数
循环遍历 先判断最后一位数 进行(n&1) 获取最后位的二进制数,和当前cur进行异或判断==0
异常 相同为0 不同为1 然后如果为0 代表有连续的,我们就 return false;反之cur值为最后一位
进行循环判断
2.int temp=n^(n>>1);return (temp&(temp+1))==0;
进行假定 如果n符合条件 那 二进制为 101010101 1010这种场景
举例 5 1 0 1;
1 0
进行异或 1 1 1;
1111111 那这种 一定符合 2的n次方-1 当temp为 2 n次方-1 temp+1 一定是符合 10000000000这种
如果是 n属于 101010二进制 那 temp&(temp+1)一定为0 为0代表连续 无重复 反之为有连续重复