Ngăn xếp
Mô tả
Trung tâm điều độ mạng điện EVN ghi nhận các chuỗi lệnh đóng/cắt rơ-le để vận hành lưới điện. Mỗi thiết bị rơ-le có hai trạng thái: đóng và cắt, được mã hóa bằng cặp ngoặc đối xứng theo đúng chủng loại:
- Rơ-le dòng 🔍: cặp ngoặc tròn
() - Rơ-le điện áp ⚡: cặp ngoặc vuông
[] - Rơ-le bảo vệ 🛡️: cặp ngoặc nhọn
{}
Khi biên dịch chuỗi lệnh, mỗi lệnh mở phải được khớp bởi đúng một lệnh đóng cùng loại, và thứ tự đóng phải ngược lại thứ tự mở — y hệt việc đóng mở các lớp hộp đựng thiết bị lồng nhau. Hãy kiểm tra xem một chuỗi lệnh đã cho có cấu trúc hợp lệ hay không.
Đầu vào
- Một chuỗi
sgồm các ký tự trong tập{ '(', ')', '[', ']', '{', '}' }.
Đầu ra
- Trả về
truenếu chuỗi lệnh hợp lệ,falsenếu không hợp lệ.
Ràng buộc
- Độ dài chuỗi
s: 1 ≤ |s| ≤ 10^4.
Ví dụ
Ví dụ 1:
- Đầu vào:
"([{}])" - Đầu ra:
true - Giải thích: Mở
(→ mở[→ mở{→ đóng}khớp{→ đóng]khớp[→ đóng)khớp(. Mọi lệnh đều khớp đúng loại và đúng thứ tự.
Ví dụ 2:
- Đầu vào:
"(]" - Đầu ra:
false - Giải thích: Mở
(nhưng gặp đóng]không khớp loại rơ-le, chuỗi lỗi ngay lập tức.
Ví dụ 3:
- Đầu vào:
"(([]" - Đầu ra:
false - Giải thích: Hai lệnh mở
(chưa được đóng khi kết thúc chuỗi, cấu trúc không hoàn chỉnh.