Cho chuỗi chỉ chứa các ngoặc tròn, vuông, nhọn. Kiểm tra xem chuỗi có cân bằng (well-formed) không.
Ví dụ
Đầu vào: "([()()]{[]})()".
Đầu ra: True.
Thuật toán
- Khởi tạo stack rỗng và từ điển
d = {'}':'{', ')':'(', ']':'['}. - Duyệt từng ký tự
c:- Nếu
clà ngoặc đóng: nếu stack rỗng hoặc đỉnh stack !=d[c]-> False; else pop. - Ngược lại (ngoặc mở): push
cvào stack.
- Nếu
- Trả về
Truenếu stack rỗng, ngược lạiFalse.
Mã nguồn Python
class Solution:
def solve(self, s):
stack = []
d = {'}':'{', ')':'(', ']':'['}
for c in s:
if c in '}])':
if not stack or stack[-1] != d[c]:
return False
stack.pop()
else:
stack.append(c)
return not stack
ob = Solution()
print(ob.solve("([()()]{[]})()"))
Đầu vào / Đầu ra
Input: "([()()]{[]})()"
Output: True