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

โปรแกรมค้นหาสตริงที่สั้นที่สุดหลังจากลบบิตที่อยู่ติดกันใน Python


สมมติว่าเรามีสตริงไบนารี s เราสามารถลบตัวอักษรสองตัวที่อยู่ติดกันได้หากต่างกัน สุดท้าย เราต้องหาความยาวของสตริงที่เล็กที่สุดที่เราหาได้ หากเราสามารถดำเนินการนี้กี่ครั้งก็ได้ตามต้องการ

ดังนั้น หากอินพุตเป็น s ="1100011" ผลลัพธ์จะเป็น 1 เนื่องจากหลังจากลบ "10" เราจะได้ "10011" จากนั้นให้ลบ "10" อีกครั้ง จะเป็น "011" จากนั้นจึงลบ "01 " มันจะเหลือ 1.

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

  • stack :=รายการใหม่
  • สำหรับแต่ละ c ใน s ทำ
    • ถ้า stack ว่างหรือด้านบนของ stack เหมือนกับ c แล้ว
      • ดัน c ลงในสแต็ก
    • มิฉะนั้นเมื่อด้านบนของ stack ไม่เหมือนกับ c แล้ว
      • องค์ประกอบป๊อปจากสแต็ก
  • คืนจำนวนองค์ประกอบในกอง

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

ตัวอย่าง

class Solution:
   def solve(self, s):
      stack = []
      for c in s:
         if not stack or stack[-1] == c:
            stack.append(c)
         elif stack[-1] != c:
            stack.pop()
      return len(stack)
ob = Solution() print(ob.solve("1100011"))

อินพุต

"1100011"

ผลลัพธ์

1