
bool isAnagram(string s, string t) {
//如果长度不等,必定false
if(s.size()!=t.size()) return false;
//用map统计其中一个字符串,<字母,出现次数>
map<char,int> hashmap;
for(char c:s)
hashmap[c] = (hashmap.find(c)!=hashmap.end()) ? hashmap[c]+1 : 1;
//用另一个字符串的字母来匹配map
for(char c:t){
//如果出现了s种没有出现过的字母,则false
if(hashmap.find(c)==hashmap.end()) return false;
--hashmap[c];
//如果某个字母比s的多,则false
if(hashmap[c]<0) return false;
}
//遍历map,如果有出现次数不为0的,则false
for(auto it = hashmap.begin();it!=hashmap.end();++it)
if(it->second != 0)
return false;
return true;
}
本文介绍了一种使用哈希映射统计字符频率的方法,来判断两个字符串是否互为字谜。通过对比两个字符串中每个字符的出现次数,可以高效地确定它们是否由相同的字符组成,只是顺序不同。
589

被折叠的 条评论
为什么被折叠?



