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