Xử lý chuỗi
Mô tả
Ban biên tập Báo Thanh Niên đang tiến hành tái cấu trúc giao diện website để tối ưu hiển thị trên cả máy tính lẫn điện thoại. Trong quá trình rà soát, lập trình viên cần đọc qua các tập tin CSS (bảng định kiểu) chứa rất nhiều khối lồng nhau, mỗi khối được bao bởi cặp dấu ngoặc nhọn { và }.
Vì các khối có thể xếp chồng lên nhau theo nhiều tầng, đội kỹ thuật muốn biết độ sâu lồng nhau lớn nhất trong một đoạn CSS để đánh giá độ phức tạp của mã nguồn. Độ sâu của một vị trí là số lượng các dấu { đang mở nhưng chưa đóng tại thời điểm đó. Bạn hãy viết một hàm nhận vào một chuỗi ký tự và trả về độ sâu lồng nhau lớn nhất.
Đầu vào
- Một tham số duy nhất
csslà chuỗi ký tự đại diện cho đoạn CSS cần phân tích.
Đầu ra
- Trả về một số nguyên không âm là độ sâu lồng nhau lớn nhất tìm được.
Ràng buộc
- Độ dài chuỗi
csskhông vượt quá 10^5 ký tự. - Chuỗi chỉ bao gồm các ký tự có thể in được (chữ cái, chữ số, dấu câu, khoảng trắng) trong bảng mã ASCII.
- Đảm bảo chuỗi luôn là một CSS hợp lệ về mặt cân bằng ngoặc: mỗi
{mở ra đều có đúng một}đóng lại theo thứ tự đúng, và không có dấu}thừa. - Số lượng dấu
{trong chuỗi không vượt quá 5000.
Ví dụ
Giải thích ví dụ 1:
- Đầu vào:
a { b { c } } - Duyệt qua chuỗi và đếm số lượng dấu mở tại mỗi vị trí:
- Gặp
{thứ nhất, độ sâu hiện tại là 1, cập nhật giá trị lớn nhất thành 1. - Gặp
{thứ hai, độ sâu hiện tại là 2, cập nhật giá trị lớn nhất thành 2. - Gặp
}, độ sâu giảm xuống còn 1. - Gặp
}cuối cùng, độ sâu về 0.
- Gặp
- Độ sâu lớn nhất đạt được là 2.