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

Chương trình Python đếm ký tự liên tiếp trong chuỗi (Run-Length Counting)


Cho chuỗi số s. Trả về danh sách các cặp (chữ_số, số_lần_lặp_liên_tiếp). Sử dụng itertools.groupby.

Ví dụ: "11522226551" → [(1,2), (5,1), (2,4), (6,1), (5,2), (1,1)].

Cách làm

  • groupby(s) trả về iterator các cặp (ký_tự, group_iterator).
  • Chuyển group_iterator thành list để đếm độ dài.
  • Thu thập các cặp (int(ký_tự), len(list(group))).

Ví dụ mã nguồn

from itertools import groupby

def solve(s):
    it = groupby(s)
    ret = []
    for digit, gp in it:
        ret.append((int(digit), len(list(gp))))
    return ret

s = "11522226551"
print(solve(s))  # [(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)]

Đầu vào / Đầu ra

Input:  "11522226551"
Output: [(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)]