C7-12 · Giải nén chuỗi
Xem dạng PDFNguồn: Bài C7-12, mục 7.10, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.
Đề
Đây là phép ngược của bài C7-09 (Nén chuỗi). Một chuỗi nén hợp lệ là dãy gồm một hay nhiều cặp viết liền nhau, mỗi cặp gồm:
- một số nguyên dương ~\ge 1~ viết bằng chữ số
0–9, không có chữ số 0 đứng đầu (10hợp lệ;0,03,007không hợp lệ); - ngay sau đó là một chữ cái
a–zhoặcA–Z.
Giải nén là thay mỗi cặp bằng chữ cái đó lặp lại đúng số lần ghi trước nó. Nếu chuỗi hợp lệ, in chuỗi giải nén; ngược lại in KHONG HOP LE.
Một số chuỗi không hợp lệ: 3A2 (thừa số 2 ở cuối, không có chữ đi kèm), A3 (chữ A không có số đứng trước), 03A (số có 0 đứng đầu), 3AB (chữ B không có số), 3# (# không phải chữ cái), 3A 2B (có dấu cách).
Dữ liệu vào
Một dòng chứa chuỗi ~s~.
Kết quả
Một dòng: chuỗi giải nén, hoặc KHONG HOP LE.
Ràng buộc
- ~1 \le |s| \le 200~; ~s~ gồm ký tự ASCII in được, không bắt đầu và không kết thúc bằng dấu cách.
- Mỗi dãy chữ số liên tiếp trong ~s~ có giá trị không quá ~200~.
- Nếu ~s~ hợp lệ thì chuỗi giải nén dài không quá ~200~ ký tự.
Gợi ý
Kiểm tra trước, giải nén sau. Duyệt từng ký tự, gom các chữ số liên tiếp vào một chuỗi so; gặp chữ cái thì so phải khác rỗng và không bắt đầu bằng "0". Hết vòng lặp mà so vẫn còn chữ số là thừa số ở cuối (giống "nhóm cuối" của C7-09).
Ví dụ 1
Dữ liệu vào:
3A12B1C
Kết quả:
AAABBBBBBBBBBBBC
Ví dụ 2
Dữ liệu vào:
3A2
Kết quả:
KHONG HOP LE
Ví dụ 3
Dữ liệu vào:
03A
Kết quả:
KHONG HOP LE
Giải thích ví dụ
- Ví dụ 1: ba cặp
3A,12B,1CchoAAA, mười hai chữB, một chữC. Số12có hai chữ số. - Ví dụ 2: sau cặp
3Acòn số2mà không có chữ cái đi kèm. - Ví dụ 3: số
03có chữ số 0 đứng đầu.
Nguồn trong sách: bài tập C7-12 (mục 7.10) · Mức: (****)