Mô tả
Tổ thẩm định BIDV vừa thu thập nhật ký truy cập trong tuần để rà soát mã RSA Soft Token. Mỗi dòng log ghi lại một mã RSA do khách hàng nhập — nhưng thực tế máy chủ nhận đủ kiểu: có dòng in hoa BIDV2024, có dòng in thường bidv2024, có khi dính thêm ký tự rác như @BIDV-2024!. Trưởng phòng yêu cầu bạn viết một công cụ tự động: chuẩn hóa toàn bộ về cùng một dạng rồi thống kê tần suất, từ đó tìm ra mã bị lặp nhiều nhất trong ngày.
Quy tắc chuẩn hóa từng dòng (áp dụng theo thứ tự):
- Bỏ mọi khoảng trắng ở đầu và cuối.
- Đổi tất cả chữ hoa thành chữ thường.
- Giữ lại chỉ chữ cái
a-zvà chữ số0-9; mọi ký tự khác (dấu câu, ký tự đặc biệt) đều bị loại bỏ hoàn toàn.
Sau khi chuẩn hóa, nếu kết quả là chuỗi rỗng thì bỏ qua dòng đó (không tính vào thống kê). Nhiệm vụ của bạn: tìm mã chuẩn hóa có số lần xuất hiện lớn nhất. Nếu nhiều mã cùng đạt số lần cao nhất, chọn mã có thứ tự từ điển nhỏ nhất. Nếu danh sách hợp lệ rỗng, trả về chuỗi rỗng.
Đầu vào
- Một chuỗi
logchứa các dòng cách nhau bởi ký tự xuống dòng\n. - Mỗi dòng có độ dài từ 0 đến 50 ký tự.
- Tổng số dòng từ 0 đến 1000.
Đầu ra
- Trả về chuỗi
resulttheo định dạng:"<ma> <so_lan>"(mã chuẩn hóa, một khoảng trắng, rồi đến số lần xuất hiện). - Nếu không có mã hợp lệ nào, trả về chuỗi rỗng
"".
Ràng buộc
- Số dòng: 0 ≤ n ≤ 1000.
- Độ dài mỗi dòng: 0 ≤ len ≤ 50.
- Ký tự trong log chỉ thuộc bảng ASCII.
- Tổng số lần lặp lại của một mã: không vượt quá 1000.
Ví dụ
Ví dụ 1:
Đầu vào: "BIDV2024\nbidv2024\n@BIDV-2024!\nVIP999\nVIP999\nxem so du"
Đầu ra: "bidv2024 3"
Giải thích từng bước:
- Dòng 1:
"BIDV2024"→ in thường →"bidv2024". - Dòng 2:
"bidv2024"→ đã thường →"bidv2024". - Dòng 3:
"@BIDV-2024!"→ bỏ@,-,!→"bidv2024". - Dòng 4 & 5:
"VIP999"→"vip999", xuất hiện 2 lần. - Dòng 6:
"xem so du"→ bỏ khoảng trắng →"xemsodu", 1 lần. bidv2024có 3 lần — cao nhất → kết quả"bidv2024 3".
Ví dụ 2:
Đầu vào: "!@#$%\n \nabc\nABC"
Đầu ra: "abc 2"
Giải thích: Dòng 1 và dòng 2 sau chuẩn hóa là rỗng nên bị bỏ qua. Dòng "abc" và "ABC" đều chuẩn hóa thành "abc", vậy abc xuất hiện 2 lần.