Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python nén chuỗi theo thuật toán Run-Length Encoding (RLE)


Nén chuỗi s bằng phương pháp Run-Length Encoding: ký tự lặp liên tiếp k lần được mã hóa thành ký_tự + k (nếu k > 1), ký tự đơn lẻ giữ nguyên.

Ví dụ: "abbbaaaaaaccdaaab" → "ab3a6c2da3b".

Thuật toán

  • Duyệt chuỗi từ trái sang phải, đếm số lần lặp liên tiếp cnt.
  • Khi gặp ký tự khác: ghi ký tự trước + cnt (nếu > 1) vào kết quả, reset cnt = 1.
  • Xử lý ký tự cuối cùng sau vòng lặp.

Ví dụ mã nguồn

def solve(s):
    res = ""
    cnt = 1
    for i in range(1, len(s)):
        if s[i - 1] == s[i]:
            cnt += 1
        else:
            res += s[i - 1]
            if cnt > 1:
                res += str(cnt)
            cnt = 1
    res += s[-1]
    if cnt > 1:
        res += str(cnt)
    return res

s = "abbbaaaaaaccdaaab"
print(solve(s))  # ab3a6c2da3b

Đầu vào / Đầu ra

Input:  "abbbaaaaaaccdaaab"
Output: ab3a6c2da3b