最近,在执行程序时,我遇到了一个问题。
以下是程序的一部分

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

10-07 23:38