สมมติว่าเรามีวงเล็บหนึ่งอัน เราต้องเขียนฟังก์ชันเพื่อคำนวณจำนวนวงเล็บขั้นต่ำที่จะลบออกเพื่อให้สตริงถูกต้อง (ปิดวงเล็บเปิดแต่ละอันในที่สุด)
ดังนั้น หากอินพุตเป็น "(()))(" ผลลัพธ์จะเป็น 2 เนื่องจากสตริงที่ถูกต้องคือ "(())" ให้ลบ ")("
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- รวม :=0, อุณหภูมิ :=0
- สำหรับแต่ละ p ใน s ทำ
- ถ้า p เหมือนกับ "(" แล้ว
- รวม :=รวม + 1
- มิฉะนั้นเมื่อ p เหมือนกับ ")" และผลรวมไม่ใช่ 0 แล้ว
- รวม :=รวม - 1
- มิฉะนั้น
- อุณหภูมิ :=อุณหภูมิ + 1
- ถ้า p เหมือนกับ "(" แล้ว
- ผลตอบแทนรวม + อุณหภูมิ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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