一. 題目
題目給定乙個正整數,檢查他是否為交替位二進位制數:換句話說,就是他的二進位制數相鄰的兩個位數永不相等。
示例
二. 方法一
解題思路
解題**
def
hasalternatingbits
(self, n:
int)
->
bool
: bin_num =
bin(n)
for i in
range(2
,len
(bin_num)-1
):if bin_num[i]
== bin_num[i +1]
:return
false
return
true
分析
三. 方法二
解題思路
分析可知: 如果乙個二進位制數相鄰位置上的數值不同, 則其左移一位後和其本身相同位置上的元素互異
我們只需要知道原二進位制數的長度, 就可以根據:n ^ (n >> 1) == 2 ** size - 1
是否相等來判斷了
解題**
def
hasalternatingbits
(self, n:
int)
->
bool
: bin_num =
bin(n)
size =
len(bin_num)-2
return n ^
(n >>1)
==2** size -
1
分析 LeetCode 693 交替位二進位制數
給定乙個正整數,檢查他是否為交替位二進位制數 換句話說,就是他的二進位制數相鄰的兩個位數永不相等。交替位二進位制數 step1 十進位制轉換成二進位制,除二取餘。step2 把這次的餘數 i 與下次的餘數 j 進行比較,若相等返回false bool hasalternatingbits int n...
Leetcode693 交替位二進位制數 位運算
給定乙個正整數,檢查他是否為交替位二進位制數 換句話說,就是他的二進位制數相鄰的兩個位數永不相等。示例 1 輸入 5 輸出 true 解釋 5的二進位制數是 101 示例 2 輸入 7 輸出 false 解釋 7的二進位制數是 111 示例 3 輸入 11 輸出 false 解釋 11的二進位制數是...
領扣(LeetCode)交替位二進位制數 個人題解
給定乙個正整數,檢查他是否為交替位二進位制數 換句話說,就是他的二進位制數相鄰的兩個位數永不相等。示例 1 輸入 5 輸出 true 解釋 5的二進位制數是 101示例 2 輸入 7 輸出 false 解釋 7的二進位制數是 111示例 3 輸入 11 輸出 false 解釋 11的二進位制數是 1...