**题目:**有效的字母异位词(力扣242)
题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
解题思路:
(1) 排序,判断
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length())return false;
char[] as=s.toCharArray();
char[] ts=t.toCharArray();
Arrays.sort(as);
Arrays.sort(ts);
return Arrays.equals(as,ts);
}
}
(2)map存储,判断两个map是否相同
class Solution {
public boolean isAnagram(String s, String t) {
// 找一个map存储s中字符出现的次数
Map<Character, Integer> mpS = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
if (mpS.containsKey(s.charAt(i))) {
mpS.put(s.charAt(i), mpS.get(s.charAt(i)) + 1);
} else {
mpS.put(s.charAt(i), 1);
}
}
// 找一个map存储s中字符出现的次数
Map<Character, Integer> mpT = new HashMap<>();
for (int i = 0; i < t.length(); i++) {
if (mpT.containsKey(t.charAt(i))) {
mpT.put(t.charAt(i), mpT.get(t.charAt(i)) + 1);
} else {
mpT.put(t.charAt(i), 1);
}
}
// System.out.println(mpT);
// System.out.println(mpS);
//如果出现的字符相同,且该字符出现的个数相同,这两个单词是有效的字母异位词
return mpS.equals(mpT) ;
}
}