Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับการดำเนินการเพื่อลบบิตที่เหมือนกันต่อเนื่องกันใน Python


สมมติว่าเรามีสตริงไบนารี s ตอนนี้ให้เราพิจารณาการดำเนินการที่เราเลือกบิตและพลิกค่าจาก 0 เป็น 1 หรือกลับกัน เราต้องหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นเพื่อให้ได้สตริงที่ไม่มีบิตต่อเนื่องกันสามบิต

ดังนั้น หากอินพุตเป็น s ="10011100" ผลลัพธ์จะเป็น 1 เนื่องจากเราสามารถพลิก 1 ถึง 0 บิตที่ดัชนี 4 เพื่อทำให้สตริง "10010100" ไม่มีบิตเหมือนกันสามบิตต่อเนื่องกัน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • l :=0, จำนวน :=0
  • ในขณะที่ l <ขนาดของ s ทำ
    • r :=ล
    • ในขณะที่ r
    • r :=r + 1
  • นับ :=นับ + ชั้นของ ((r - l) / 3)
  • l :=r
  • จำนวนคืนสินค้า
  • ตัวอย่าง

    ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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

    อินพุต

    "10011100"
    

    ผลลัพธ์

    1