LeetCode:
题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
解题思路:
法一:排序
调用库函数直接对两个字符串进行排序后,进行比较。返回其比较结果。
代码实现:
bool isAnagram(string s, string t) {
sort(s.begin(),s.end());
sort(t.begin(),t.end());
return s==t;
}
法二:哈希
由于字符串中字母皆为26个英文字母,遍历第一个字母串使用数组建立一个小型哈希表,记录字母出现的频率。
再遍历第二个字符串,将其每个字母出现的频率在哈希表中进行搜索。返回该字母在哈希表中的值。
代码实现:
bool isAnagram(string s, string t) {
vector< int> hash(26);
if(s.size()!=t.size())
{
return false;
}
for(char& iter: s)
{
hash[iter-'a']++;
}
for(char& iter : t)
{
hash[iter-'a']--;
if(hash[iter-'a']<0)
{
return false;
}
}
return true;
}

浙公网安备 33010602011771号