Open bitfishxyz opened 5 years ago
这里只要统计每个字符串中每个单词出现的频率就行了
import java.util.*;
class Solution {
public boolean isAnagram(String s, String t) {
if (s == null) {
return t == null;
}
Map<Character, Integer> map1 = stringToFre(s);
Map<Character, Integer> map2 = stringToFre(t);
// 如果字符串中的元素个数不同,结果肯定是false
if (map1.size() != map2.size()) {
return false;
}
// 确认每个字符在每个字符串中出现的频率都相同
for (Character c : map1.keySet()) {
if (!map1.keySet().contains(c)) {
return false;
}
if (!map1.get(c).equals(map2.get(c))) {
return false;
}
}
return true;
}
/**
* 统计字符串中每个字母的频率
* @param s
* @return
*/
public Map<Character, Integer> stringToFre(String s){
Map<Character, Integer> map = new HashMap<>(s.length());
for (char ele : s.toCharArray()) {
Integer value = map.get(ele);
if (value == null){
map.put(ele, 1);
} else {
map.put(ele, value + 1);
}
}
return map;
}
}
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
示例 2:
说明: 你可以假设字符串只包含小写字母。
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?