Ren*_*nuz 2 java arrays string char
for (int i = 0; i < s.length(); ++i)
{
if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')
{
++array[s.charAt(i) - 'A'];
}
}
Run Code Online (Sandbox Code Playgroud)
我理解For循环.s.length()是26,确切地说是int [26].所以这个循环将发生26次,0-25.如果i,0-25处的Char在或者是AZ之间它将继续进行++array[s.charAt(i) - 'A'];从我看到它每个循环添加一次数组,或者每个循环添加一次数组的值,对于char i的String,所以第一个将是0秒将是2,因为数组从0开始.因此在位置添加数组i -'A'是我感到困惑的地方.
Mys*_*ial 11
该语句++array[s.charAt(i) - 'A'];正在递增索引的数组中的值s.charAt(i) - 'A'.
这个循环的作用是它计算每个字母的出现次数s.
原因- 'A'是,它"转移"ascii/unicode值,使其A - Z值为0 - 25.因此更适合作为数组索引.
array似乎是"每个大写字母的反击".通过从字符串'A'中的任意字符减去字符,您可以在数组中获得字母的索引:
'A' - 'A' == 0
'B' - 'A' == 1
'C' - 'A' == 2
Run Code Online (Sandbox Code Playgroud)
要理解这一点,您应该理解,Java char与(unsigned)一样对待short.因此,您可以使用char