Cho chuỗi dấu ngoặc đơn, tìm số lượng dấu ngoặc tối thiểu cần xóa để chuỗi trở nên đúng (mọi dấu mở đều được đóng).
Ví dụ: "(()))(" → 2 (chuỗi đúng là "(())", xóa ")(").
Quy trình giải quyết
- Khởi tạo
total = 0(số dấu mở chưa khớp),temp = 0(số dấu đóng thừa). - Duyệt qua chuỗi:
- Nếu là
'(', tăngtotal. - Nếu là
')'vàtotal > 0, giảmtotal. - Ngược lại, tăng
temp.
- Nếu là
- Trả về
total + temp.
Ví dụ mã nguồn
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
Đầu vào
"(()))("
Đầu ra
2