Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Bigram xuất hiện nhiều nhất

    Ngoài tần suất từng chữ cái đơn (monogram), phân tích tần suất bigram (cặp 2 chữ cái liên tiếp) cũng là công cụ hữu ích trong thám mã cổ điển, ví dụ để nhận diện các cặp phổ biến trong tiếng Anh như TH, HE, IN, ...

    Cho một văn bản, sau khi chuẩn hóa (chỉ giữ chữ cái A…ZA \ldots ZA…Z, không phân biệt hoa/thường, loại bỏ ký tự khác) ta được chuỗi S=s1s2…sNS = s_1 s_2 \ldots s_NS=s1​s2​…sN​. Các bigram của SSS là s1s2,s2s3,…,sN−1sNs_1s_2, s_2s_3, \ldots, s_{N-1}s_Ns1​s2​,s2​s3​,…,sN−1​sN​ (có thể chồng lấn lên nhau, tổng cộng N−1N-1N−1 bigram).

    Hãy tìm bigram xuất hiện nhiều lần nhất trong SSS. Nếu có nhiều bigram cùng đạt số lần xuất hiện lớn nhất, chọn bigram nhỏ nhất theo thứ tự từ điển.

    Ví dụ: văn bản banana chuẩn hóa thành BANANA, các bigram là BA, AN, NA, AN, NA. AN và NA cùng xuất hiện 2 lần; theo thứ tự từ điển AN nhỏ hơn NA, vậy kết quả là AN 2.

    • Định dạng đầu vào:

      Một dòng duy nhất chứa văn bản, độ dài tối đa 10510^5105 ký tự (có thể rỗng).

    • Định dạng đầu ra:

      Gọi NNN là số chữ cái sau chuẩn hóa. Nếu N<2N < 2N<2 (không đủ để tạo bigram), in ra undefined. Ngược lại in một dòng theo định dạng <BIGRAM> <SỐ_LẦN> (bigram gồm 2 chữ in hoa, cách số lần xuất hiện bởi một khoảng trắng).

    Ví dụ:

    Đầu vào:

    A

    Đầu ra:

    undefined
    

    Đầu vào:

    Đầu ra:

    undefined
    

    Đang tải editor...