30/09/2018, 17:41
Thuật toán thống kê được các từ xuất hiện trong 1 chuỗi trong Java?
Cho mình hỏi là làm sao thống kê được các từ xuất hiện trong 1 chuỗi vd:
Chuỗi m nhập vào là: anh dang doi
Yêu cầu in ra:
ky tu a xuat hien 2 lan
ký tự n xuat hien 2 lan
ký tự h xuất hiện 1 lần
ký tự d xuất hiện 2 lần
ký tự g xuất hiện 1 lần
ký tự o xuất hiện 1 lần
ký tự i xuất hiện 1 lần
tu an xuat hien 1 lan
tương tu cac tu tiep theo
Ai biết gợi ý mình thuật toán với , nếu java càng tốt nak
Xin cảm ơn @@ rất nhiều
Bài liên quan
Các đơn giản nhất đó là dùng 1 mảng kí tự để lưu những kí tự xuất hiện trong mảng, 1 mảng số nguyên lưu số lần xuất hiện. Duyệt từ đầu chuỗi tới cuối chuỗi, sau đó trong mỗi phần tử lại duyệt ngược lại đầu, nếu trùng thì tăng biến đếm.
Dùng
Map
trong java cho tiện####đếm số lần xuất hiện mỗi từ
###đếm số lần xuất hiện chữ cái
thay
s.split("\\s+") thành s.split("")
cảm ơn @Gio nhiều.
Mình thấy có cách này hay mà không cần đao to búa lớn gì cả, chỉ có một mẹo nhỏ thôi.
Ta biết rằng mỗi ký tự thì tương ứng với 1 số nguyên và số ký tự ASCII thì là hữu hạn. Chính vì thế, ta sẽ tạo ra một mảng số nguyên có 256 ký tự. Bạn đầu đặt tất cả các phần tử bằng không. Tiếp theo dùng vòng lặp như sau:
Đoạn mã trên là cho Java nhé, C cũng tương tự thôi. Cuối cùng ta xem lại mảng statistics, những phần tử nào khác 0 thì ta sẽ in số lần xuất hiện ra. Nên nhớ, cách này chỉ là mẹo trong trường hợp bảng chữ cái là hữu hạn thôi nhé :D.
cảm ơn b, m xem nó đã nhé