如何解决a[c - 'a' ]++ 在 Java 中是什么意思?
目标是计算两个字符串中的常见字符并返回一个整数。除了
,我什么都懂a[c - 'a' ]++;
我试过搜索一些类的文档,搜索引用中的内容,搜索一些可能的正在发生的事情的描述,但我什至无法找到调用 a[c - 'a' ]++;
的内容,更不用说它是什么了实际上在做。对我来说,它似乎正在计算特定字符的出现,但我不确定。
这是代码
int commonCharacterCount(String s1,String s2) {
int[] a = new int[26],b = new int[26];
for (char c: s1.tochararray())
a[c - 'a']++;
for (char c: s2.tochararray())
b[c - 'a']++;
int s = 0;
for (int i = 0; i < 26; ++i)
s +=Math.min(a[i],b[i]);
return s;
解决方法
'a'
属于 char
类型,它 - 来自 C 传统 - 可以解释为 a number type。也就是说,您可以像使用 int
或 long
一样使用它进行算术运算。
char
的值传统上由 ASCII table 给出,其中 'a'
恰好与 97
相同。
在你的代码中,c
也是一个 char
,如果你假设 s1
和 s2
只包含小写字母,你知道 {{1 }} 位于 c
范围内。从中减去[97,122]
(即'a'
),然后为您提供更方便的范围97
。
我说“更方便”是因为在这里,[0,25]
用于索引数组 c - 'a'
,如您所知,数组索引从 0 开始。
Java 中的字符在某些上下文中可以作为小整数进行操作。表达式 c - 'a'
表示“c
的整数表示”减去“'a'
的整数表示”。换句话说,您将获得 c
相对于 ASCII 字符集中的 'a'
的偏移量,即小写字母表中 c
的索引。
因此 a[c - 'a']++
表示用索引 a
增加 i
中的计数器,其中 i
是字母表中 c
的位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。