微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

a[c - 'a' ]++ 在 Java 中是什么意思?

如何解决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。也就是说,您可以像使用 intlong 一样使用它进行算术运算。

char 的值传统上由 ASCII table 给出,其中 'a' 恰好与 97 相同。

在你的代码中,c 也是一个 char,如果你假设 s1s2 只包含小写字母,你知道 {{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 举报,一经查实,本站将立刻删除。