python-013Đọc toàn bộ đề miễn phí

Kiểm tra biểu thức dấu ngoặc hợp lệ bằng Stack

Trình phân tích cú pháp (parser) của AI Empire Academy cần xác thực biểu thức chứa các dấu ngoặc do người dùng nhập vào.

PythonTrung bình20 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

stackdata structuresparsing

Kiến thức tiên quyết: stack operations, dictionaries.

Nội dung đề bài

Mục tiêu kiến thức

  • Ứng dụng cấu trúc dữ liệu Ngăn xếp (Stack - LIFO) để kiểm tra tính cân bằng và đóng mở ngoặc.
  • Kết hợp dict ánh xạ giữa dấu đóng và dấu mở tương ứng.
  • Xử lý các trường hợp biên: stack rỗng khi gặp dấu đóng, còn dư dấu mở khi hết chuỗi.

Mô tả bài toán

Trình phân tích cú pháp (parser) của AI Empire Academy cần xác thực biểu thức chứa các dấu ngoặc do người dùng nhập vào.

Chuỗi chỉ chứa các ký tự ngoặc sau: (, ), {, }, [, ]. Biểu thức được coi là hợp lệ nếu:

  • Mỗi dấu mở ngoặc phải được đóng bằng dấu ngoặc cùng loại.
  • Các dấu ngoặc phải được đóng theo đúng thứ tự mở trước đóng sau (LIFO).
  • Mọi dấu đóng ngoặc đều phải có dấu mở ngoặc tương ứng xuất hiện trước nó.

Hãy viết hàm is_valid_parentheses(s: str) -> bool trả về True nếu chuỗi dấu ngoặc hợp lệ, ngược lại trả về False. Chuỗi rỗng được coi là hợp lệ.

Input

Chuỗi ký tự s (str).

Output

Trả về giá trị boolean True hoặc False.

Ràng buộc

  • Độ dài 0 ≤ |s| ≤ 105.
  • Ký tự chỉ gồm: (, ), {, }, [, ].
  • Thời gian chạy tối đa: 1000ms.
  • Giới hạn bộ nhớ: 256MB.

Ví dụ 1

Input

`s = "()[]{}"`

Output

`True`

Ví dụ 2

Input

`s = "(]"`

Output

`False`

Ví dụ 3

Input

`s = "([)]"`

Output

`False`
3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.