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

โปรแกรมนับวงเล็บที่ไม่ถูกต้องขั้นต่ำที่จะลบออกเพื่อให้สตริงถูกต้องในPython


สมมติว่าเรามีวงเล็บหนึ่งอัน เราต้องเขียนฟังก์ชันเพื่อคำนวณจำนวนวงเล็บขั้นต่ำที่จะลบออกเพื่อให้สตริงถูกต้อง (ปิดวงเล็บเปิดแต่ละอันในที่สุด)

ดังนั้น หากอินพุตเป็น "(()))(" ผลลัพธ์จะเป็น 2 เนื่องจากสตริงที่ถูกต้องคือ "(())" ให้ลบ ")("

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

  • รวม :=0, อุณหภูมิ :=0
  • สำหรับแต่ละ p ใน s ทำ
    • ถ้า p เหมือนกับ "(" แล้ว
      • รวม :=รวม + 1
    • มิฉะนั้นเมื่อ p เหมือนกับ ")" และผลรวมไม่ใช่ 0 แล้ว
      • รวม :=รวม - 1
    • มิฉะนั้น
      • อุณหภูมิ :=อุณหภูมิ + 1
  • ผลตอบแทนรวม + อุณหภูมิ

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

ตัวอย่าง

class Solution:
   def solve(self, s):
      total = 0
      temp = 0
      for p in s:
         if p == "(":
            total += 1
         elif p == ")" and total:
            total -= 1
         else:
            temp += 1
      return total + temp
ob1 = Solution()
string = "(()))("
print(ob1.solve(string))

อินพุต

"(()))("

ผลลัพธ์

2