给 定 两 个 字 符 串 s 和 t , 编 写 一 个 函 数 来 判 断 t 是 否 是 s 的 一 个 字 母 异 位 词 。 \color{DeepSkyBlue}{给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。} 给定两个字符串s和t,编写一个函数来判断t是否是s的一个字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
解法1 |
public boolean isAnagram(String s, String t) {
if (s.length()!=t.length())
return false;
Map<Character,Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0)+1);
}
for (int i = 0; i < t.length(); i++) {
if (map.get(t.charAt(i))!=null && map.get(t.charAt(i))>0){
map.put(t.charAt(i),map.get(t.charAt(i))-1);
}else {
return false;
}
}
return true;
}
解法1 |
public boolean isAnagram1(String s, String t){
if (s.length()!=t.length())
return false;
char[] sChar = s.toCharArray();
char[] tChar = t.toCharArray();
Arrays.sort(sChar);
Arrays.sort(tChar);
for (int i = 0; i < s.length(); i++) {
if (sChar[i]!=tChar[i])
return false;
}
return true;
}