gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:06:54 25 4
gpt4 key购买 nike

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

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',用于转换“ascii/unicode 值。我不清楚也不明白。有人可以帮助理解确切的区别吗?” count[name.charAt(i)]++;count[str1.charAt(i) - 'a']++; 之间以及哪种用例我应该使用 - 'a'

最佳答案

当您使用 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 是数组中的第三个位置,即第三个字符 c 的计数,每次遇到字符 c 时,它都会增加 count[2]

关于java - count[name.charAt(i)]++ 和 count[str1.charAt(i) - 'a' ]++ 之间的确切区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com