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).