count [name.charAt(i)] ++和count [str1.charAt(i)-'a'] ++之间的确切区别是什么?

时间:2018-06-29 15:39:24

标签: java

我理解下面的代码计算了名称字符串中每个字母的出现次数。

String name = "haier";
int[] count = new int[256];
for (int i = 0; i < name.length(); i++) {
     count[name.charAt(i)]++;
}

但是在某些教程的几个地方,我可以看到- 'a'如下所述添加了

for(int i=0; i<str1.length();i++) {
    count[str1.charAt(i) - 'a']++;
}

根据文章- 'a',用于t0转换“ ascii / unicode值。我不清楚也不清楚。有人可以帮助理解{{1} }和count[name.charAt(i)]++;,在哪种情况下我应该使用count[str1.charAt(i) - 'a']++;

1 个答案:

答案 0 :(得分:1)

使用count[name.charAt(i)]++;时,count[]的长度必须至少为122,因为z的ASCII值为122。

但是当您使用count[str1.charAt(i) - 'a']++;时,可以将数组count[]的长度减少到26,因为只有26个字符(a-z)(如果我们仅考虑字符)。

换句话说,'z' - 'a'的意思是122-97 = 25,即最大长度为26

此数组的主要目的似乎是计算每个字母的出现次数。

例如 ,如果str1.charAt(i)为c,则count ['c'-'a'] ++表示count [2]处的值为2数组中的第3个位置,即计算第3个字符c,每次遇到字符c时,它会在count [2]处递增值