我正在看一段我不能理解的代码。我想和我们的社区确认一下。
在下面的代码中,我不能理解‘a’++行是做什么的。或者我们如何在java7中编写同样的代码。解释说我们有一个字符串s和一个整型数组计数。我们遍历字符串s,计算s中字符的出现次数,并将count的频率放入数组中。请帮帮我!!
String s = "test";
int[] count = new int[26];
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
count[ch-'a']++;
}发布于 2018-03-05 12:45:05
代码正在尝试计算每个字符出现的次数。
并将其分配为
a occupies position 0
b occupies position 1
etc etc要获得位置0,您需要调用'a‘- 'a’
要获得位置1,您需要调用'b‘- 'a’
因此,“countch‘a’++;”中发生的事情等同于
int position = ch -'a'; // get position
count[position] = count [position] + 1; // increment the count in that particular position发布于 2018-03-05 12:36:37
您正在迭代一个int数组count,并递增索引ch-'a'处的整数值,这将产生一个整数值,例如,count['a'-'a'] == count[0]标记该字符存在于字符串中。
在ch - 'a'中进行减法是因为字母字符的整数值不是从0开始的。
发布于 2018-03-05 12:34:02
这意味着将这两个字符视为整数,并从另一个字符中减去一个。例如,
'b' - 'a' == 1在您发布的代码中,它将所有小写字符计数到一个数组数据结构中。换句话说,如果字符串中有许多小写字母‘a’,则计数将非常大;如果字符串中有许多小写字母‘b’,则count1将很大,依此类推。
https://stackoverflow.com/questions/49103511
复制相似问题