使用 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

更新於: 2021年5月29日

247 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.