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

Chương trình Java đếm số lần xuất hiện của mỗi ký tự

Giả sử chuỗi:

String myStr = "thisisit";

Đếm số lần xuất hiện dùng HashMap. Duyệt chuỗi và dùng containsKey() và charAt() để đếm:

HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = myStr.length() - 1; i >= 0; i--) {
    if (hashMap.containsKey(myStr.charAt(i))) {
        int count = hashMap.get(myStr.charAt(i));
        hashMap.put(myStr.charAt(i), ++count);
    } else {
        hashMap.put(myStr.charAt(i), 1);
    }
}

Ví dụ hoàn chỉnh

import java.util.HashMap;

public class Demo {
    public static void main(String[] args) {
        String myStr = "thisisit";
        System.out.println("String = " + myStr);
        
        HashMap<Character, Integer> hashMap = new HashMap<>();
        for (int i = myStr.length() - 1; i >= 0; i--) {
            if (hashMap.containsKey(myStr.charAt(i))) {
                int count = hashMap.get(myStr.charAt(i));
                hashMap.put(myStr.charAt(i), ++count);
            } else {
                hashMap.put(myStr.charAt(i), 1);
            }
        }
        System.out.println("Đếm xuất hiện mỗi ký tự = " + hashMap);
    }
}

Kết quả

String = thisisit
Đếm xuất hiện mỗi ký tự = {s=2, t=2, h=1, i=3}

Cách hiện đại (Java 8+ Stream):

Map<Character, Long> freq = myStr.chars()
    .mapToObj(c -> (char) c)
    .collect(Collectors.groupingBy(c -> c, Collectors.counting()));

Kết quả: {t=2, h=1, i=3, s=2} (thứ tự có thể khác do HashMap).