请解释一下这行代码a [s1.charAt(i)-'a'] ++;

时间:2019-02-05 11:49:38

标签: java

我正在做一个Java程序,但无法理解这行代码的工作方式。

for (int i = 0; i < s1.length(); i++)
    a[s1.charAt(i) - 'a']++;

2 个答案:

答案 0 :(得分:7)

s1.charAt(i)返回i s1的第String个字符。 假定此字符串仅包含小写字母(即'a'到'z')s1.charAt(i)-'a'将字符'a'映射到索引0,将'b'映射到索引1,并且依此类推(“ z”映射到索引25)。

a[s1.charAt(i)-'a']++;

增加一个与字符s1.charAt(i)相对应的计数器。

因此,此循环计算String s1中每个字母的出现次数。

最后,a[0]将包含'a'的数量,a[1]将包含'b'的数量,依此类推。

答案 1 :(得分:0)

for(int i=0;i<s1.length();i++)//This line represents loop from 0 to length of s1-1
        a[s1.charAt(i)-'a']++;
//s1.chatAt(i) returns the character presents at ith index.
//s1.chatAt(i)-'a' returns (ASCII value of s1.charAt(i) - ASCII value of 'a')