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代表连续 无重复  反之为有连续重复

posted @ 2022-03-28 10:12  铁柱97  阅读(59)  评论(0)    收藏  举报