Python 中的二進位制間隙
假設我們有一個正整數 N,我們需要在 N 的二進位制表示中找出兩個連續 1 之間的最長距離。如果不存在兩個連續的 1,則返回 0。
因此,如果輸入類似於 22,則輸出將為 2,因為 22 的二進位制形式是 10110。在 22 的二進位制表示中,有三個 1 和兩個連續的 1 對。第一個連續的 1 對的距離為 2,第二個連續的 1 對的距離為 1。答案將是這兩個距離中的較大值,即 2。
要解決此問題,我們將遵循以下步驟 -
- K := 列出 N 的二進位制表示位
- Max := 0,C := 0,S := 0
- Flag := False
- i 從 0 到 K 的大小範圍, do
- 如果 K[i] 等於 '1',且 C 等於 0,且 Flag 等於 False,則
- C:= i
- Flag := True
- 否則當 K[i] 等於 '1' 且 Flag 為 true 時,則
- S:= i
- 如果 Max<abs(S-C),則
- Max := |S-C|
- C:= S
- 如果 K[i] 等於 '1',且 C 等於 0,且 Flag 等於 False,則
- 返回 Max
讓我們看看以下實現以獲得更好的理解 -
示例
class Solution:
def binaryGap(self, N):
B = bin(N).replace('0b','')
K = str(B)
K = list(K)
Max = 0
C = 0
S =0
Flag =False
for i in range(len(K)):
if K[i] is '1' and C is 0 and Flag is False:
C=i
Flag = True
elif K[i] is '1' and Flag:
S=i
if Max<abs(S-C):
Max = abs(S-C)
C=S
return Max
ob = Solution()
print(ob.binaryGap(22))輸入
22
輸出
2
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP