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

Chương trình đếm các phép toán để loại bỏ các bit giống nhau liên tiếp trong Python

Giả sử chúng ta có một chuỗi nhị phân s, bây giờ chúng ta hãy xem xét một phép toán trong đó chúng ta chọn một bit và lật giá trị của nó từ 0 sang 1 hoặc ngược lại. Chúng ta phải tìm số phép toán tối thiểu cần thiết để có được một chuỗi không có ba bit liên tiếp giống nhau.

Vì vậy, nếu đầu vào là s =​​"10011100", thì đầu ra sẽ là 1, vì chúng ta có thể lật 1 thành 0 bit ở chỉ số 4 để làm cho chuỗi "10010100" không có ba bit giống nhau liên tiếp.

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

  • l:=0, count:=0
  • while l
  • r:=l
  • while r
  • r:=r + 1
  • count:=count + tầng của ((r - l) / 3)
  • l:=r
  • số lượng trả lại
  • Ví dụ

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    def solve(s):
       l = 0
       count = 0
       while l < len(s):
          r = l
          while r < len(s) and s[r] == s[l]:
             r += 1
          count += (r - l) // 3
          l = r
       return count
    
    s = "10011100"
    print(solve(s))

    Đầu vào

    "10011100"
    

    Đầu ra

    1