242. Valid Anagram

2018-02-27  本文已影响12人  衣介书生

题目分析

题目链接,登录 LeetCode 后可用
这道题目是让我们判断一个字符串是不是另一个字符串的异序字符串。
第一个思路就是将字符串转换成字符数组,然后进行排序,之后再重组成字符串进行比较即可。
第二个思路就是利用 HashMap。

代码

解法一

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s == null || t == null || s.length() != t.length()) {
            return false;
        }
        char[] schar = s.toCharArray();
        char[] tchar = t.toCharArray();
        
        Arrays.sort(schar);
        Arrays.sort(tchar);
        
        String s1 = new String(schar);
        String t1 = new String(tchar);
        
        if(s1.equals(t1)) {
            return true;
        } else {
            return false;
        }
    }
}

解法二

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s == null || t == null || s.length() != t.length()) {
            return false;
        }
        Map<Character, Integer> hashmap = new HashMap<Character, Integer>();
        for(char c : s.toCharArray()) {
            if(hashmap.containsKey(c)) {
                hashmap.put(c, hashmap.get(c) + 1);
            } else {
                hashmap.put(c, 1);
            }
        }
        for(char c : t.toCharArray()) {
            // 没有相对应的字母或者有相对应的字母但是数目不足
            if(!hashmap.containsKey(c) || (hashmap.containsKey(c) && hashmap.get(c) == 0)) {
                return false;
            } else {
                hashmap.put(c, hashmap.get(c) - 1);
            }
        }
        return true;
    }
}
上一篇下一篇

猜你喜欢

热点阅读