在执行各种java任务时,我经常遇到其他人的解决方案,他们使用条件来过滤/添加/删除某些内容,通过在引号中写入字符(如“a”)来跟踪字母表中字母的索引。我找不到它的名字,从这里我无法研究操作原理并找到至少一些有关它的信息。这是我看到的代码示例:Task with anagrams
for (int i = 0; i < s.length(); i++) {
char_counts[s.charAt(i) - 'a']++; //Находит индекс буквы в массиве и добовляет туда +1 в данном случае.
char_counts[t.charAt(i) - 'a']--; //Находит индекс буквы в массиве и отнимает там -1 в данном случае.
一般问题是,它叫什么?我在哪里可以找到有关这些事情的信息?
如果给出完整的代码,“工作”的原理会更容易理解,但一般来说是这样描述的:
本例中,将英文字符写在单引号中
'a',将其与行中所写的字符相减s,t得到数组中正确的索引char_counts,其目的是存储指定行中字符的出现频率。也就是说,在这个问题中,必须有一个条件,即行
s,只t包含从到 的小写英文字母'a''z',因此,要正确计算给定字母在数组中的索引char_counts,您需要减去偏移量'a':'a' - 'a' -> 0, 'b' - 'a' -> 1, ... 'z' - 'a' -> 25。它还假设 string
t不短于 strings。这种方法通常用于数据集有限的教育任务中,因为对于其他字符(至少是数字或大写字母),索引将计算错误,从而导致异常
ArrayIndexOutOfBoundsException。因此,在所呈现的循环中,字符串中的字符的频率
s被加上,而字符串中的字符的频率t被减。然后,它检查频率数组中写入的结果char_counts:如果至少找到一个非零值,则字符串s和t不是字谜词。