最近,在执行程序时,我遇到了一个问题。
以下是程序的一部分
public static int numberNeeded(String first, String second) {
int[] lettercounts = new int[26];
for(char c : first.toCharArray()){
lettercounts[c-'a']++;
}
我不明白这行代码的作用:
lettercounts[c-'a']++;
我猜想它会增加lettercounts数组中特定字符的值(最初是0)。我猜'a'的索引为0,'z'的索引为25。但是我想了解那小段代码是如何工作的。
最佳答案
目标是计算每个角色的出现次数。
c - 'a'
是一种获取字符在字母表中位置的巧妙方法。
'a' - 'a'
会给您0。'b' - 'a'
会给您1。'c' - 'a'
会给您2,依此类推。该值用作数组的索引(如您正确指出的那样,它以零初始化),并且计数递增。
值得注意的是,如果字符串中包含
a-z
以外的其他任何字符(包括大写字符),则此操作将中断,并且您会看到IndexOutOfBoundsException