哈希表-242.有效的字母异位词

71 阅读2分钟

1.给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

说明: 你可以假设字符串只包含小写字母。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • st 仅包含小写字母

2.

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] record = new int[26];
        for (int i = 0; i < s.length(); i++) {
            record[s.charAt(i) - 'a']++;// 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了
        }

        for (int i = 0; i < t.length(); i++) {
            record[t.charAt(i) - 'a']--;
        }

        for (int count: record) {
            if (count != 0) { // record数组如果有的元素不为零0,说明字符串s和t 一定是谁多了字符或者谁少了字符。
                return false;
            }
        }
        return true; // record数组所有元素都为零0,说明字符串s和t是字母异位词
    }
}

1)

 int[] record = new int[26];

创建了一个名为record的整数数组,该数组有26个元素。

2)

record[s.charAt(i) - 'a']++

这行代码的作用是将字符串中每个字母的出现次数记录在一个数组中。让我们逐步解释这行代码的每个部分:

  1. s.charAt(i):这部分代码是用来获取字符串 s 中索引为 i 的字符。
  2. 'a':这是一个字符常量,表示字母表中的小写字母 'a'。
  3. s.charAt(i) - 'a':这部分代码将字符串中的字母转换为相对于字母表的索引。例如,如果字符是 'b',那么它的索引就是 1。
  4. record[s.charAt(i) - 'a']:这是一个数组,用来记录每个字母的出现次数。数组的索引是字母的相对索引,值是该字母出现的次数。
  5. ++:这是一个递增操作符,用来将数组中对应字母的出现次数加一。

综上所述,这行代码的作用是统计字符串中每个字母出现的次数,并将结果记录在一个数组中。数组的索引对应字母的相对索引,值对应该字母出现的次数。

2)