哈希表--有效的字母异位词
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram" 输出: true
示例 2:
输入: s = "rat", t = "car" 输出: false
方法一:map
class Solution {
public:bool isAnagram(string s, string t) {int n1=s.length(),n2=t.length();if(n1!=n2){return false;}map<char,int> mp_s,mp_t;for(int i=0;i<n1;++i){mp_s[s[i]]++;mp_t[t[i]]++;}map<char,int>::iterator it_s,it_t;for(it_s=mp_s.begin(),it_t=mp_t.begin();it_s!=mp_s.end();++it_s,++it_t){if(it_s->first!=it_t->first||it_s->second!=it_t->second){return false;}}return true;}
};
方法二:sort
class Solution {
public:bool isAnagram(string s, string t) {int n1=s.length(),n2=t.length();if(n1!=n2){return false;}sort(s.begin(),s.end());sort(t.begin(),t.end());return s==t;}
};
方法三:vector
class Solution {
public:bool isAnagram(string s, string t) {if(s.length()!=t.length()){return false;}vector<int> table(26,0);for(auto& ch:s){table[ch-'a']++;}for(auto& ch:t){table[ch-'a']--;if(table[ch-'a']<0){return false;}}return true;}
};