C8-04 · Đếm từ
Xem dạng PDFĐề
Cho một câu tiếng Việt không dấu. Không phân biệt chữ hoa, chữ thường (Hoc, HOC, hoc là cùng một từ). Hãy đưa câu về chữ thường rồi in mỗi từ và số lần nó xuất hiện, theo thứ tự xuất hiện lần đầu của từ trong câu.
Dữ liệu vào
Một dòng chứa câu, chỉ gồm chữ cái tiếng Anh (A–Z, a–z) và dấu cách. Giữa hai từ có thể có nhiều dấu cách; đầu và cuối dòng cũng có thể có dấu cách.
Kết quả
Mỗi từ khác nhau một dòng: từ (viết thường) và số lần xuất hiện, cách nhau một dấu cách.
Ràng buộc
- Dòng dài không quá ~2 \cdot 10^5~ ký tự và có ít nhất một từ.
Ví dụ
Dữ liệu vào:
Hoc nua hoc mai Hoc
Kết quả:
hoc 3
nua 1
mai 1
Giải thích ví dụ
Đưa về chữ thường được hoc nua hoc mai hoc. Từ hoc xuất hiện 3 lần (vị trí 1, 3, 5), nua và mai mỗi từ một lần. Thứ tự in là thứ tự gặp lần đầu: hoc (vị trí 1), nua (vị trí 2), mai (vị trí 4) — không sắp theo bảng chữ cái.
Lưu ý
- Tách từ bằng
split()không tham số: nó bỏ mọi dấu cách thừa.split(" ")sinh ra "từ rỗng" khi có hai dấu cách liền nhau. - Phải đưa về chữ thường trước khi đếm, không phải lúc in.
- Câu có thể có tới hàng chục nghìn từ khác nhau: dùng dict để đếm (mục 8.2); đếm bằng
list.count()cho từng từ sẽ quá chậm.
Nguồn: Bài C8-04, mục 8.9, giáo trình Lập trình cơ sở với Python — TS. Nguyễn Quốc Long.
Nguồn trong sách: bài tập C8-04 (mục 8.9) · Mức: (**)