[Buổi 15][Ngăn xếp][WS] Bài 1: Kiểm định cấu trúc ngoặc của biểu thức


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types

Kiểm định cấu trúc ngoặc của biểu thức

Bối cảnh và bài toán

Một bộ phân tích cú pháp nhận chuỗi chỉ gồm bốn ký hiệu (, ), [ và ]. Một chuỗi được xem là hợp lệ nếu mọi dấu đóng ghép đúng với dấu mở gần nhất chưa được ghép và toàn bộ dấu mở đều được đóng.

Yêu cầu

Xác định chuỗi đầu vào có hợp lệ hay không.

Input

  • Một dòng chứa chuỗi s; dòng có thể rỗng.

Output

In YES nếu chuỗi hợp lệ, ngược lại in NO.

Ràng buộc

  • 0 <= |s| <= 2 * 10^5
  • s[i] thuộc tập { (, ), [, ] }

Chấm điểm

Subtask Điểm Điều kiện Official tests
S1 20% |s| <= 100 01–04
S2 30% |s| <= 5000 05–10
S3 50% Không có ràng buộc bổ sung 11–20

Ví dụ 1

Input

([()[]])

Output

YES

Giải thích. Mỗi dấu đóng khớp đúng loại với dấu mở gần nhất chưa đóng.

Ví dụ 2

Input

([)]

Output

NO

Giải thích. Dấu ) gặp khi dấu mở gần nhất là [, nên cấu trúc sai ngay tại vị trí đó.

Thông tin bài tập

Thuộc tính Giá trị
Mã bài DSA-M05-B15-WS01
Buổi B15
Loại bài WORKSHOP
Mức độ khó Trung bình (Medium)
Thời gian làm bài khuyến nghị 35 phút
Time limit 1 giây
Memory limit 256 MB
Tổng điểm 100
Chuẩn ngôn ngữ tham chiếu C++11 trở lên

Nguồn: Phỏng theo UVa Online Judge 673 – Parentheses Balance.

Tham khảo: https://onlinejudge.org/external/6/673.pdf


Comments

There are no comments at the moment.

Zalo