242. Valid Anagram

题目分析

原题链接,登陆 LeetCode 后可用
这道题目我理解的是给两个字符串,然后判断一下这两个字符串是不是字符串中每个字母的个数都相同,只是位置可能不同。
这里想到的第一个解法是用一个Map来统计字符串 s 中每个字符的个数,然后再统计字符串 t 的情况。判断两个字符串中每个字符出现的次数是否相同。

代码

class Solution {
    public boolean isAnagram(String s, String t) {
        Map shm = new HashMap();
        char[] sa = s.toCharArray();
        char[] ta = t.toCharArray();
        // 统计 s 字符串情况
        for(Character c : sa) {
            if(shm.containsKey(c)) {
                shm.put(c, shm.get(c) + 1);
            } else {
                shm.put(c, 1);
            }
        }
        for(Character c : ta) {
            if(!shm.containsKey(c)) {
                return false;
            } else {
                shm.put(c, shm.get(c) - 1);
                if(shm.get(c) == 0) {
                    shm.remove(c);
                }
            }
        }
        // 这种情况容易漏掉
        if(!shm.isEmpty()) {
            return false;
        }
        return true;
    }
}

你可能感兴趣的:(242. Valid Anagram)