Computer >> Máy Tính >  >> Lập trình >> Python

Khoảng cách nhị phân trong Python

Giả sử chúng ta có một số nguyên dương N, chúng ta phải tìm khoảng cách xa nhất giữa hai chữ 1 liên tiếp trong biểu diễn nhị phân của N. Nếu không có hai chữ 1 liên tiếp nào, thì trả về 0.

Vì vậy, nếu đầu vào là 22, thì đầu ra sẽ là 2, vì 22 trong hệ nhị phân là 10110. Có ba cặp trong biểu diễn nhị phân của 22 và hai cặp liên tiếp của 1. Cặp số 1 liên tiếp đầu tiên có khoảng cách 2, sau đó cặp số 1 liên tiếp thứ hai có khoảng cách 1. Đáp số sẽ lớn nhất trong hai khoảng cách này, là 2.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • K:=tạo danh sách các bit biểu diễn nhị phân của N
  • Tối đa:=0, C:=0, S:=0
  • Cờ:=False
  • đối với tôi trong phạm vi từ 0 đến kích thước là K, thực hiện
    • nếu K [i] là '1' và C là 0 và Flag là False, thì
      • C:=i
      • Cờ:=True
    • ngược lại khi K [i] là '1' và Flag thì
      • S:=i
      • nếu Max
      • Tối đa:=| S-C |
    • C:=S
  • trả về Max
  • Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    Ví dụ

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

    Đầu vào

    22

    Đầu ra

    2