Valid Anagram

Given two stringssandt, write a function to determine iftis an anagram ofs.

For example,
s= "anagram",t= "nagaram", return true.
s= "rat",t= "car", return false.

Note:
You may assume the string contains only lowercase alphabets.

Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?

Tips:

可以用map来存每个字母出现的次数,也可以巧妙地用排序解决。

Code:

Map:

public class Solution {
   public boolean isAnagram(String s, String t) {
        if (s == null || t == null) return false;
        Map<Character, Integer> map = new HashMap<>();
        for (char c : s.toCharArray()) {
            if (!map.containsKey(c)) map.put(c, 0);
            map.put(c, map.get(c) + 1);
        }
        for (char c : t.toCharArray()) {
            if (!map.containsKey(c)) return false;
            map.put(c, map.get(c) - 1);
            if (map.get(c) == 0) map.remove(c);
        }
        return map.isEmpty();
    }
}

Sort:

public class Solution {
    public boolean isAnagram(String s, String t) {
        if (s == null || t == null) return false;
        char[] sc = s.toCharArray();
        char[] tc = t.toCharArray();
        Arrays.sort(sc);
        Arrays.sort(tc);
        return String.valueOf(sc).equals(String.valueOf(tc));
    }

}

results matching ""

    No results matching ""