学习下一阶段:哈希表类型题
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
方法:哈希表法、排序比较法、自创哈希表数组(效力最高)
class Solution {
public:
bool isAnagram(string s, string t) {
//方法1:哈希表
if(s.size() != t.size()){
return false;
}
unordered_map<char,int> map;
//一进一出
for(int i = 0;i<s.size();i++){
++map[s[i]];
--map[t[i]];
}
//迭代器遍历
for(unordered_map<char,int>::iterator it = map.begin();it != map.end();it++){
if(it->second != 0){
return false;
}
}
return true;
//方法2:排序比较法
if(s.size() != t.size()){
return false;
}
sort(s.begin(),s.end());
sort(t.begin(),t.end());
return s == t;
//方法2:自创哈希表数组
int array[26] = {0};
//先将s里面的字符存到里面
for(int i = 0;i<s.size();i++){
array[s[i]-'a']++;
}
//对照t逐一剔除
for(int i = 0;i<t.size();i++){
array[t[i]-'a']--;
}
for(int i = 0;i<26;i++){
if(array[i] != 0){
return false;
}
}
return true;
}
};