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ả, resetcnt = 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