1. 程式人生 > 其它 >693.交替位二進位制數

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代表連續 無重複  反之為有連續重複