1、题目描述
给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。
如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。
示例 1:
输入:s = “abacbc”
输出:true
解释:s 中出现过的字符为 ‘a’,‘b’ 和 ‘c’ 。s 中所有字符均出现 2 次。
示例 2:
输入:s = “aaabb”
输出:false
解释:s 中出现过的字符为 ‘a’ 和 ‘b’ 。
‘a’ 出现了 3 次,‘b’ 出现了 2 次,两者出现次数不同。
2、解
重复次数之类的果断选择哈希表。
class Solution {
public:
bool areOccurrencesEqual(string s) {
//利用map统计每个字符出现的次数
unordered_map<char, int> sMap;
for(char it : s)
++sMap[it];
/记录sMap中第一个字符出现的次数,后遍历是否与之相等
int times = sMap[s[0]];
//遍历sMap中的后续每个字符出现次数,若不等,返回false
for(auto &&[_, v] : sMap)
if(v!= times) return false;
return true;
}
};