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_iteratorthà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)]