Mô tả
Trung tâm điều hành giao thông Hà Nội quản lý một hệ thống camera đặt tại nhiều ngã tư lớn như Cầu Giấy, Kim Mã, Thái Hà,... Mỗi camera gửi về một luồng nhật ký mã lỗi liên tục dưới dạng một chuỗi ký tự, trong đó mỗi ký tự đại diện cho một loại lỗi cụ thể, ví dụ như 'A' (mất kết nối), 'B' (chập chờn tín hiệu), 'C' (rung hình), v.v.
Để chẩn đoán nhanh một cụm sự cố, kỹ sư cần tìm một đoạn mã ngắn nhất trong luồng nhật ký sao cho đoạn mã này chứa đủ tất cả các loại lỗi đã biết. Nhiệm vụ của bạn là xác định vị trí bắt đầu (chỉ số tính từ 0) của đoạn mã ngắn nhất đó. Nếu có nhiều đoạn cùng có độ dài ngắn nhất, hãy chọn đoạn xuất hiện sớm nhất. Nếu không tồn tại đoạn mã nào chứa đủ các loại lỗi, hãy trả về -1.
Đầu vào
- Chuỗi
logStream: chuỗi ký tự đại diện cho luồng nhật ký mã lỗi. Độ dài chuỗi nằm trong khoảng từ 1 đến 10^5 ký tự. Mỗi ký tự là một chữ cái tiếng Anh in hoa (từ'A'đến'Z'). - Chuỗi
errorTypes: chuỗi chứa các loại lỗi cần phát hiện, không có ký tự trùng lặp. Độ dài nằm trong khoảng từ 1 đến 26 ký tự, mỗi ký tự là một chữ cái tiếng Anh in hoa.
Đầu ra
- Trả về một số nguyên là vị trí bắt đầu (chỉ số từ 0) của đoạn mã lỗi ngắn nhất chứa đủ tất cả các loại lỗi trong
errorTypes. Nếu không tìm thấy, trả về-1.
Ràng buộc
- 1 ≤ độ dài
logStream≤ 10^5. - 1 ≤ độ dài
errorTypes≤ 26. errorTypeskhông chứa ký tự trùng lặp.- Mọi ký tự trong
logStreamvàerrorTypesđều là chữ cái in hoa'A'–'Z'. - Đảm bảo mọi giá trị trung gian không vượt quá giới hạn số an toàn của JavaScript (Number float64).
Ví dụ
Ví dụ 1:
- Đầu vào:
logStream = "ABABCBBAC",errorTypes = "ABC" - Đầu ra:
2
Giải thích: Luật nhật ký là chuỗi "ABABCBBAC". Ta cần tìm đoạn mã ngắn nhất chứa đủ cả 'A', 'B', 'C'.
- Đoạn từ chỉ số 0 đến 2 là
"ABA"— thiếu'C'. - Đoạn từ chỉ số 1 đến 4 là
"BABC"— đủA, B, C, độ dài 4. - Đoạn từ chỉ số 2 đến 4 là
"ABC"— đủA, B, C, độ dài 3. Đây là đoạn ngắn nhất.
Vậy vị trí bắt đầu là 2.
Ví dụ 2:
- Đầu vào:
logStream = "AABBCC",errorTypes = "AD" - Đầu ra:
-1
Giải thích: Trong luỗi nhật ký không hề có ký tự 'D', nên không thể tìm được đoạn nào chứa đủ 'A' và 'D'. Kết quả là -1.