【69.有效的字母异位词】

40 阅读1分钟

题目

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

示例 1:

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

题解

题目的意思是两个字符串的元素一致

方式一:哈希表

可以解决unicode

public boolean isAnagram(String s, String t) {
    if (s.length() != t.length()) {
        return false;
    }
    
    HashMap<Character, Integer> map = new HashMap<>(); // 字符,数量
    for (char c: s.toCharArray()) {
        map.put(c, map.getOrDefault(c, 0) + 1);
    }
    
    for (char c: t.toCharArray()) {
        if (map.containsKey(c) && map.getOrDefault(c, 0) > 0) {
            map.put(c, map.getOrDefault(c, 0) - 1);
        } else {
            return false;
        }
    }
    
    return true;
}

方式二:哈希表

不能解决unicode

public boolean isAnagram(String s, String t) {
    if (s.length() != t.length()) {
        return false;
    }
    
    int[] arr = new int[26];
    for (char c: s.toCharArray()) {
        arr[c - 'a']++;
    }
    
    for (char c: t.toCharArray()) {
        if (arr[c - 'a'] > 0) {
            arr[c - 'a']--;
        } else {
            return false;
        }
    }
    
    return true;
}

方式三:字符串

可以解决unicode

public boolean isAnagram(String s, String t) {
    if (s.length() != t.length()) {
        return false;
    }

    for (char c: s.toCharArray()) {
        String cc = String.valueOf(c);
        if (t.contains(cc)) {
            t = t.replaceFirst(cc, "");
        } else {
            return false;
        }
    }
    return true;
}

总结

数据结构:哈希表字符串