我遇到了一个代码,该代码检查字符是否在'a'和'z'之间不区分大小写。但是,我不知道接下来要执行的操作是:
alphabets[c - 'a']++;
有人可以向我解释此代码吗?
alphabets = new int[26];
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
if ('a' <= c && c <= 'z')
{
alphabets[c - 'a']++; // what does this do?
}
}
答案 0 :(得分:1)
此代码计算字符串中每个小写字母出现的次数。 alphabets
是一个数组,其中第一个(即索引0
)索引保存a
的数量,第二个索引保存b
s的数量,等等。
从字符中减去a
将产生相对索引,然后++
将增加该字母的计数器。
答案 1 :(得分:0)
Java中的char
只是一个16位宽的小整数。一般而言,它持有的值是Unicode [除了:Java并不表示字符为“ ASCII”]分配给字符的值,但从根本上讲,char只是整数。因此'a'
是整数0x0061
,也可以写成97
。
因此,如果您的值在'a'到'z'范围内,那么您的值在97到122范围内。将'a'减去(减去97)将得出0到25的范围,即适合索引26个元素的数组alphabets
。