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

เพิ่มขั้นต่ำเพื่อทำให้วงเล็บถูกต้องใน Python


สมมติว่าเรามีสตริง S ของวงเล็บ '(' และ ')' เราเพิ่มจำนวนวงเล็บขั้นต่ำที่ตำแหน่งใดๆ เพื่อให้สตริงผลลัพธ์ในวงเล็บถูกต้อง สตริงวงเล็บจะใช้ได้ก็ต่อเมื่อ −

  • เป็นสตริงว่าง
  • สามารถเขียนเป็น XY (X ต่อด้วย Y) โดยที่ X และ Y เป็นสตริงที่ถูกต้อง
  • สามารถเขียนเป็น (A) โดยที่ A เป็นสตริงที่ถูกต้อง

ดังนั้นหากสตริงเป็นแบบ "()))((" เราก็จำเป็นต้องเพิ่มวงเล็บอีก 4 อันเพื่อให้สตริงถูกต้อง

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

  • ถ้า S ว่างเปล่า ให้คืนค่า 0
  • count :=0, temp เป็นอาร์เรย์ temp_counter :=0
  • สำหรับฉันใน S
    • ถ้าฉันเปิดวงเล็บ ให้ใส่ i ลงใน temp
    • อย่างอื่น
      • เมื่อความยาวของ temp> 0 และองค์ประกอบสุดท้ายของวงเล็บเปิดอยู่ ให้ลบองค์ประกอบสุดท้ายของ temp ออก ไม่เช่นนั้นให้ใส่ i ลงใน temp
  • คืนค่าขนาดของอุณหภูมิ

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

ตัวอย่าง

class Solution:
   def minAddToMakeValid(self, S):
      if not S:
         return 0
      count = 0
      temp = []
      temp_counter = 0
      for i in S:
         if i =='(':
            temp.append(i)
         else:
            if len(temp)>0 and temp[len(temp)-1] =='(':
               temp.pop(len(temp)-1)
            else:
               temp.append(i)
      return len(temp)
ob = Solution()
print(ob.minAddToMakeValid("()))(("))

อินพุต

"()))(("

ผลลัพธ์

4