cpp-319Đọc toàn bộ đề miễn phí

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

C++Cơ bản12 phút

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ủ đề

data-structuresstackbracketsentry-ramp

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à:

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.

Nhóm Zalo