LeetCode0693 交替位二進位制數

2021-10-09 05:25:39 字數 924 閱讀 8612

一. 題目

題目給定乙個正整數,檢查他是否為交替位二進位制數:換句話說,就是他的二進位制數相鄰的兩個位數永不相等。

示例

二. 方法一

解題思路

解題**

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...