Given a string s
, return true
if s
is a good string, or false
otherwise.
A string s
is good if all the characters that appear in s
have the same number of occurrences (i.e., the same frequency).
Example 1:
Input: s = "abacbc" Output: true Explanation: The characters that appear in s are 'a', 'b', and 'c'. All characters occur 2 times in s.
Example 2:
Input: s = "aaabb" Output: false Explanation: The characters that appear in s are 'a' and 'b'. 'a' occurs 3 times while 'b' occurs 2 times, which is not the same number of times.
Constraints:
1 <= s.length <= 1000
s
consists of lowercase English letters.
class Solution:
def areOccurrencesEqual(self, s: str) -> bool:
counter = Counter(s)
cnt = -1
for c, times in counter.items():
if cnt == -1:
cnt = times
elif cnt != times:
return False
return True
class Solution {
public boolean areOccurrencesEqual(String s) {
int[] counter = new int[26];
for (char c : s.toCharArray()) {
++counter[c - 'a'];
}
int cnt = -1;
for (int i = 0; i < 26; ++i) {
if (counter[i] == 0) {
continue;
}
if (cnt == -1) {
cnt = counter[i];
} else if (cnt != counter[i]) {
return false;
}
}
return true;
}
}