题干解读:判断两个字符串中每个字母出现的次数是否相同.
思路:先遍历每一个字符串,使用哈希表来记录出现的字符,以及他出现的次数,如果表中没有这个字符,那么就添加这个键,同时将值置1,如果有,则值加一。
最后遍历哈希表的键值对,检查他们同一键所对应的值是否相等,如果不相等则返回-1;等则将每个字符出现的次数加到ans上。
最后return出来.
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @param c string字符串
* @return int整型
*/
int isCongruent(string s, string c) {
unordered_map<char,int> c1;
unordered_map<char,int> c2;
for(char i:s){
if(c1.count(i)){
c1[i]++;
}else{
c1.emplace(i,1);
}
}
for(char i:c){
if(c2.count(i)){
c2[i]++;
}else{
c2.emplace(i,1);
}
}
int ans=0;
for(auto i = c1.begin();i!=c1.end();i++){
if(c1[i->first] != c2[i->first]){
return -1;
}else{
ans+=c1[i->first];
}
}
return ans;
}
};

京公网安备 11010502036488号