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
Bài liên quan
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.