题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
题解
题目的意思是两个字符串的元素一致
方式一:哈希表
可以解决unicode
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
HashMap<Character, Integer> map = new HashMap<>(); // 字符,数量
for (char c: s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
for (char c: t.toCharArray()) {
if (map.containsKey(c) && map.getOrDefault(c, 0) > 0) {
map.put(c, map.getOrDefault(c, 0) - 1);
} else {
return false;
}
}
return true;
}
方式二:哈希表
不能解决unicode
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] arr = new int[26];
for (char c: s.toCharArray()) {
arr[c - 'a']++;
}
for (char c: t.toCharArray()) {
if (arr[c - 'a'] > 0) {
arr[c - 'a']--;
} else {
return false;
}
}
return true;
}
方式三:字符串
可以解决unicode
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
for (char c: s.toCharArray()) {
String cc = String.valueOf(c);
if (t.contains(cc)) {
t = t.replaceFirst(cc, "");
} else {
return false;
}
}
return true;
}
总结
数据结构:哈希表、字符串