给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
下面使用====哈希表=====来实现======但
时间复杂度为:O(n)
空间复杂度为:O(26)因为是26个字母
public boolean isAnagram(String s, String t) {
//字符串长度不相等的,肯定就不是异位词
if (s.length() != t.length()) {
return false;
}
//遍历字符串S中,往map里添加字母出现的次数,key为字母,value为出现的次数
Map<Character, Integer> map= new HashMap<Character, Integer>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
//遍历字符串t中,往map里减少字母出现的次数,key为字母,value为出现的次数
for (int i = 0; i < t.length(); i++) {
char ch = t.charAt(i);
map.put(ch, map.getOrDefault(ch, 0) - 1);
//如果出现 map[i]<0,则说明 t 包含一个不在 s 中的额外字符,返回 false 即可。
if (table.get(ch) < 0) {
return false;
}
}
return true;
}