868 二進位制間距

2022-01-15 10:47:08 字數 1638 閱讀 1503

給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個連續的 1 之間的最長距離。

如果沒有兩個連續的 1,返回 0 。

示例 1:

輸入:22

輸出:2

解釋:

22 的二進位制是 0b10110 。

在 22 的二進位制表示中,有三個 1,組成兩對連續的 1 。

第一對連續的 1 中,兩個 1 之間的距離為 2 。

第二對連續的 1 中,兩個 1 之間的距離為 1 。

答案取兩個距離之中最大的,也就是 2 。

示例 2:

輸入:5

輸出:2

解釋:

5 的二進位制是 0b101 。

示例 3:

輸入:6

輸出:1

解釋:

6 的二進位制是 0b110 。

示例 4:

輸入:8

輸出:0

解釋:

8 的二進位制是 0b1000 。

在 8 的二進位制表示中沒有連續的 1,所以返回 0 。

1 <= n <= 10^9

思路:一遍遍歷,用乙個 max 表示遍歷過程中的最大距離,運用位運算從右向左檢查低位,如果 (n & 1) != 0

就說明低位是1,則更新distance距離為0,把當前作為第乙個一,同時更新當前max,話不多說 看**。

1

int binarygap(int

n) 2

14 distance = 0;15

}16 distance +=distanceon;

17 n = n >> 1

; 18}19

return

max;

20 }

按位與運算子 『&』,是對比二進位制數的每一位數,如果是1則結果為1,否則都為0;

例如:00011011

00001001

結果:00001001

868 二進位制間距

給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個 相鄰 1 之間的 最長距離 如果不存在兩個相鄰的 1,返回 0 如果只有 0 將兩個 1 分隔開 可能不存在 0 則認為這兩個 1 彼此 相鄰 兩個 1 之間的距離是它們的二進位制表示中位置的絕對差。例如,1001 中的兩個 1 的距離為 3...

868 二進位制間距

題目描述 給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個相鄰 1 之間的最長距離。如果沒有兩個相鄰的 1,返回 0 示例 1 輸入 22 輸出 2 解釋 22 的二進位制是 0b10110 在 22 的二進位制表示中,有三個 1,組成兩對相鄰的 1 第一對相鄰的 1 中,兩個 1 之間的距...

868 二進位制間距 python

給定乙個正整數 n,找到並返回 n 的二進位制表示中兩個連續的 1 之間的最長距離。如果沒有兩個連續的 1,返回 0 示例 1 輸入 22 輸出 2 解釋 22 的二進位制是 0b10110 在 22 的二進位制表示中,有三個 1,組成兩對連續的 1 第一對連續的 1 中,兩個 1 之間的距離為 2...