Dòng a[(int) s[i] - 96]++; có nghĩa là gì vậy?

int a[27]={0},l = s.size();
for(i=0;i<l;i++)
{
    a[(int) s[i] - 96]++;
}

Bảng tần suất đây mà.

1 Like

Có 26 ký tự từ a đến z.
Khai báo mảng a chứa số lần xuất hiện của từng ký tự a-z (số lần xuất hiện của a là a[1], số lần xuất hiện của b là a[2], …)
Vị trí của ký tự a trong bảng mã ASCII là 97
nếu s[i] là ký tự a: (int)s[i] - 96 = 1
nếu s[i] là ký tự b: (int)s[i] - 96 = 2

nếu s[i] là ký tự z: (int)s[i] - 96 = 26
a[(int) s[i] - 96]++: tăng số lần xuất hiện của ký tự s[i] đang lưu ở mảng a thêm 1 đơn vị

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?