Kiểm tra dãy ngoặc cân bằng bằng ngăn xếp
Trình biên dịch, trình soạn thảo mã và cả máy tính bỏ túi đều phải kiểm tra xem người dùng
Tiến độ của tôi ở bài này
Điểm và code bạn nộp đượ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ủ đề
Kiến thức tiên quyết: cpp-basics, strings.
Nội dung đề bài
Mô tả bài toán
Trình biên dịch, trình soạn thảo mã và cả máy tính bỏ túi đều phải kiểm tra xem người dùng đã đóng đủ ngoặc hay chưa. Một dãy ngoặc chỉ hợp lệ khi mỗi ngoặc đóng khớp đúng với ngoặc mở gần nhất còn chưa được đóng, và không có ngoặc đóng nào xuất hiện khi chưa hề có ngoặc mở tương ứng. Đây là bài toán mẫu mực để làm quen với ngăn xếp theo nguyên tắc vào sau ra trước.
Yêu cầu
Cho một xâu s chỉ gồm sáu ký tự ngoặc (, ), [, ], {, }. Hãy kiểm tra xem các ngoặc trong s có khớp cặp đúng hay không. In ra YES nếu dãy ngoặc cân bằng và NO nếu không cân bằng. Hai cặp ngoặc không được lồng chéo nhau, nên ([)] là không hợp lệ vì cặp [ ] cắt ngang qua cặp ( ).
Quy ước nộp bài
Nộp chương trình solution.cpp đọc dữ liệu từ stdin và in kết quả ra stdout. In đúng một từ YES hoặc NO trên một dòng duy nhất, không in thêm khoảng trắng hay chữ nào khác.
Input
- Một dòng duy nhất chứa xâu s, độ dài từ 1 đến 20, không chứa khoảng trắng.
Output
- In ra YES nếu dãy ngoặc cân bằng, ngược lại in ra NO.
Ràng buộc
- 1 <= |s| <= 20, xâu chỉ gồm sáu ký tự (, ), [, ], {, }.
- Thời gian cho mỗi bộ dữ liệu là 1 giây.
Ví dụ 1
Input
()[]{}
Output
YES
Ví dụ 2
Input
([)]
Output
NO
Giải thích
Với dữ liệu vào:
Kết quả là:
Với dữ liệu vào:
Kết quả là:
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.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
