int a[27]={0},l = s.size();
for(i=0;i<l;i++)
{
a[(int) s[i] - 96]++;
}
Dòng a[(int) s[i] - 96]++; có nghĩa là gì vậy?
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