01/10/2018, 17:19

Hàm đếm số lần xuất hiện của ký tự

public class main {

	public static void main(String[] args) {
		char[] chars = {'x', 's', 'c', 'j', 'y', 'n', 'j', 'y', 'z', 'm', 'n', 'q', 'v', 'j', 'a', 'v', 'i', 'c', 'r', 'p', 'm', 't', 'f', 'n', 'e', 'j', 'x', 's', 'm', 't'};
		//30 chu cai
		int[] counts = countLetters(chars);
		for(int e: counts) {
			System.out.print(e + " ");
		}
		
	}
	public static int[] countLetters(char[] chrs) {
		int[] counts = new int[26];
		for(int i = 0; i < chrs.length ; i++) {
			counts[chrs[i] - 'a']++;
		}
		return counts;
	}
}

Mọi người giải thích giúp em phần counts[chrs[i] - 'a']++; cách thức nó tăng dần bắt đầu từ 0 để gắn vào mảng counts kiểu gì vì nếu ví dụ i = 0 thì counts[120 - 97]++; theo bảng unicode. Vậy nó sẽ thành counts[23]++; nhưng không có câu lệnh gán và mảng counts bắt đầu từ 23

Trương Tấn Phát viết 19:20 ngày 01/10/2018

Trong mảng counts, các giá trị của a - z sẽ tương đương với các chỉ số từ 0 - 25 (độ dài là 26).
Khi counts[chrs[i] - 'a']++ sẽ lấy chỉ số của mảng counts tương đương với kí tự đó tăng lên 1.
Ví dụ: khi chrs[i] là kí tự a thì tương đương: counts['a' - 'a'] = counts[0]
Cũng tương tự với các kí tự khác: b 1, c 2, d 3,... z 25.

Bài liên quan
0