Mô tả
Anh Long làm tổ trưởng tổ vận hành hệ thống camera giám sát giao thông tại một thành phố lớn. Mỗi tối, hệ thống lại nhả ra một loạt file log cấu hình nhiều dòng, mỗi dòng chứa một đoạn thông tin trạng thái của một trạm camera. Đội trực ca thấy rằng việc tra cứu thủ công trên từng dòng rất mất thời gian, nên họ thống nhất một quy tắc: ghép toàn bộ nội dung file log thành một dòng duy nhất để dán vào ô tìm kiếm của phần mềm giám sát.
Quy tắc ghép:
- Mọi ký tự xuống dòng được thay bằng một khoảng trắng.
- Sau khi ghép, nếu có nhiều khoảng trắng liên tiếp nhau (do giữa các từ vốn có khoảng trắng cộng thêm khoảng trắng thay thế xuống dòng), phải thu gọn về đúng một khoảng trắng.
- Kết quả cuối cùng không được có khoảng trắng ở đầu và không được có khoảng trắng ở cuối.
Nhiệm vụ của bạn là viết một hàm nhận chuỗi cấu hình nhiều dòng và trả về chuỗi đã ghép theo đúng quy tắc trên.
Đầu vào
Một chuỗi log chứa nội dung log nhiều dòng. Chuỗi có thể chứa chữ cái, chữ số, dấu câu, khoảng trắng và ký tự xuống dòng \n. Ký tự \r không xuất hiện. Độ dài chuỗi từ 0 đến 10^5 ký tự.
Đầu ra
Trả về một chuỗi: kết quả sau khi đã ghép dòng, thu gọn khoảng trắng và loại bỏ khoảng trắng thừa ở hai đầu.
Ràng buộc
- Độ dài chuỗi
logthỏa mãn 0 ≤ |log| ≤ 10^5. - Ký tự xuống dòng được biểu diễn bằng
\n. - Không có ký tự
\rtrong chuỗi.
Ví dụ
Ví dụ 1
Đầu vào: "CAM-01 Online\nCAM-02 Offline\nCAM-03 Online"
Quá trình xử lý:
- Thay mỗi ký tự
\nbằng khoảng trắng:"CAM-01 Online CAM-02 Offline CAM-03 Online". - Kiểm tra khoảng trắng liên tiếp: không có, nên giữ nguyên.
- Cắt khoảng trắng đầu/cuối: không có.
Kết quả: "CAM-01 Online CAM-02 Offline CAM-03 Online"
Ví dụ 2
Đầu vào: " CAM-01 Online \n CAM-02 Offline "
Quá trình xử lý:
- Thay
\nbằng khoảng trắng:" CAM-01 Online CAM-02 Offline ". - Thu gọn các nhóm khoảng trắng liên tiếp về một khoảng trắng:
" CAM-01 Online CAM-02 Offline ". - Cắt khoảng trắng ở hai đầu:
"CAM-01 Online CAM-02 Offline".
Kết quả: "CAM-01 Online CAM-02 Offline"