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));
}
}