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