我理解下面的代码计算了名称字符串中每个字母的出现次数。
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']++;
答案 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]处递增值