char[] arr = inputString.toCharArray();
int[] a = new int[26];
for (char ch : arr) {
a[ch - 'a']++;
}
有人能解释一下这个for循环中发生了什么吗?
答案 0 :(得分:1)
您的代码将a
内的任何字母(小写)的出现次数存储在数组inputString
中。
基本上,a
数组有26个“位置”。每个位置代表a-z中按字母顺序排列的字母。这意味着a[0]
代表字母“a”,a[1]
代表字母“b”,依此类推。
在java中,char
变量的内部处理方式与int
类型相同。这意味着您可以将char
解析为int
。 char的int
值是该char的UTF-16十进制表示(请参阅http://asecuritysite.com/coding/asc2)。如您所见,字符“a”的十进制UTF-16代码为97.可以说,例如,您的for循环正在处理字母“b”。其十进制值为“98”。在java中,'b'-'c'
是1(98-97)。因此,您的代码将在数组的位置1中以1的整数增加。换句话说,它正在计算字母b的出现次数。
当然,如果正在处理的字母不是a-z,代码将抛出异常。
答案 1 :(得分:0)
它计算输入字符串中每个小写字母的出现次数。如果其中一个字符不是a-z,我希望数组索引超出范围。