Mô tả
Tại trung tâm dữ liệu Viettel IDC, hàng triệu thiết bị mạng liên tục đẩy về các bản ghi trạng thái. Khác với log thông thường, mỗi thiết bị lại dùng một dấu phân cách khác nhau: có nhóm dùng dấu phẩy, nhóm khác lại chuộng dấu chấm phẩy, và các máy chủ cũ vẫn dùng dấu gạch đứng. Để đồng bộ dữ liệu về một định dạng chung, phần mềm phân tích của bạn nhận một chuỗi tổng hợp chứa cả ba loại dấu này.
Nhiệm vụ của bạn là tách chuỗi đó ra thành danh sách các đoạn con không rỗng. Các dấu phân cách bao gồm: dấu phẩy (,), dấu chấm phẩy (;) và dấu gạch đứng (|). Bạn cần giữ nguyên thứ tự các đoạn xuất hiện và bỏ qua mọi đoạn rỗng sinh ra khi hai dấu phân cách nằm liền nhau hoặc nằm ở đầu/cuối chuỗi.
Đầu vào
Một chuỗi s (kiểu dữ liệu chuỗi) chứa các ký tự ASCII có thể in được, độ dài từ 0 đến 10^5.
Đầu ra
Trả về một danh sách các chuỗi con (mảng chuỗi) theo đúng thứ tự xuất hiện, sau khi đã loại bỏ toàn bộ các phần tử rỗng.
Ràng buộc
- Độ dài chuỗi
nthỏa mãn: 0 <= n <= 10^5. - Mỗi ký tự trong chuỗi là ký tự ASCII có thể in được (mã 32 đến 126), bao gồm cả chữ cái, chữ số, khoảng trắng và các dấu câu khác.
Ví dụ
Ví dụ 1:
- Đầu vào:
"CPU90;MEM45|NET10,DISK70" - Đầu ra:
["CPU90", "MEM45", "NET10", "DISK70"] - Giải thích: Duyệt qua chuỗi, mỗi khi gặp dấu
;,|hoặc,, ta thực hiện cắt. Bốn đoạn thu được theo thứ tự làCPU90,MEM45,NET10vàDISK70. Không có đoạn rỗng nào xuất hiện.
Ví dụ 2:
- Đầu vào:
"UP,,DOWN;|LEFT" - Đầu ra:
["UP", "DOWN", "LEFT"] - Giải thích: Ở đây có nhiều dấu phân cách nằm liên tiếp nhau: sau
UPlà hai dấu phẩy, và sauDOWNlà cả dấu chấm phẩy lẫn dấu gạch đứng. Các đoạn rỗng nằm giữa chúng đều bị loại bỏ, chỉ giữ lại ba đoạn có nội dung.