使用 Python 查詢數字二進位制形式中 1 的最長距離的程式
假設我們有一個數字 N,我們需要找到其二進位制表示中兩個連續 1 之間的最長距離。如果沒有兩個連續的 1,則返回 0。
因此,如果輸入為 71,則輸出將為 4,因為 71 的二進位制形式為 1000111。現在有四個 1,第一個 1 和第二個 1 之間的距離為 4。所有其他 1 之間的距離為 1。因此,這裡最長距離為 4。
為了解決這個問題,我們將遵循以下步驟:
K := 建立一個包含 N 的二進位制表示的位列表
Max := 0,C := 0,S := 0
Flag := False
對於 i 從 0 到 K 的大小,執行以下操作:
如果 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
返回 Max
讓我們看看下面的實現,以便更好地理解:
示例
def solve(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
n = 71
print(solve(n))輸入
71
輸出
4
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP