针对两个字符串分别建立哈希表,key为字母,value为字母出现的次数。 若两个哈希表完全相同,则字符串互为字母异位词。
执行用时: c++ 12ms; java 28ms; python 64ms
c++
class Solution {
public:
bool isAnagram(string s, string t) {
unordered_map<char, int> smap, tmap;
for (auto c:s) smap[c]++;
for (auto c:t) tmap[c]++;
return smap == tmap;
}
};
java
class Solution {
public boolean isAnagram(String s, String t) {
Map<Character,Integer> smap = new HashMap();
Map<Character,Integer> tmap = new HashMap();
for(int i=0;i<s.length();i++)
{
char c = s.charAt(i);
if(!smap.containsKey(c))
smap.put(c,1);
else
smap.put(c,smap.get(c)+1);
}
for(int i=0;i<t.length();i++)
{
char c = t.charAt(i);
if(!tmap.containsKey(c))
tmap.put(c,1);
else
tmap.put(c,tmap.get(c)+1);
}
return smap.equals(tmap);
}
}
python
class Solution:
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
smap = {}
tmap = {}
for c in s:
if c not in smap:
smap[c]=1
else:
smap[c]+=1
for c in t:
if c not in tmap:
tmap[c]=1
else:
tmap[c]+=1
return smap==tmap