哈希表--242题 --异位词判断

zhanglei 2022年05月31日 268次浏览

题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

 

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

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

具体思路

在学习哈希表之前,对于这道题的思路只有暴力匹配

在有了哈希表的思路之后**,我们可以定义一个长度为26的数组record记录s中每个字母的个数**(出现1次a,则record[0]++)

再遍历t字符串,出现对应字母就将数组对应位置的值减1

最后看record数组的所有元素如果全是0,则字符串s与t “异位”,否则不是。

这样的时间复杂度只有O(n)。

个人解答

class Solution {
    public boolean isAnagram(String s, String t) {

        int[] record = new int[26];
        for (char c : s.toCharArray()) {
            //强转
            record[c - 'a'] += 1;
        }
        for (char c : t.toCharArray()) {
              //强转
            record[c - 'a'] -= 1;
        }
        for (int i : record) {
            if (i != 0) {
                return false;
            }
        }
        return true;
    }
}