1941. 检查是否所有字符出现次数相同

题目

给你一个字符串 s ,如果 s 是一个 字符串,请你返回 true ,否则请返回 false

如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 字符串。

示例1:

1
2
3
输入:s = "abacbc"
输出:true
解释:s 中出现过的字符为 'a','b' 和 'c' 。s 中所有字符均出现 2 次。

示例2:

1
2
3
4
输入:s = "aaabb"
输出:false
解释:s 中出现过的字符为 'a' 和 'b' 。
'a' 出现了 3 次,'b' 出现了 2 次,两者出现次数不同。

提示:

  • 1 <= s.length <= 1000
  • s 只包含小写英文字母。

解法

解法一:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public boolean areOccurrencesEqual(String s) {
int[] count = new int[26];
for (char c : s.toCharArray()) {
count[c - 'a']++;
}

Set<Integer> set = new HashSet<>();
for (int c : count) {
if (0 == c) {
continue;
}

if (!set.isEmpty() && !set.contains(c)) {
return false;
}
set.add(c);
}
return true;
}

解法二:

Java

1
2
3
public boolean areOccurrencesEqual(String s) {
return 1 == s.chars().boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting())).values().stream().distinct().count();
}
0%