使用java实现给你一个字符串数组words,请你找出所有在words的每个字符串中都出现的共用字符(包括重复字符),并以数组形式返回,你可以按任意顺序返回答案,示例如下 输入:words = ["bella","labei","roller"] 输出:["e","l","l"]
时间: 2023-09-24 22:04:25 浏览: 98
思路:使用哈希表记录每个字符出现的次数,然后遍历第一个字符串,将其中的字符和出现次数加入哈希表中,然后遍历剩下的字符串,更新哈希表中每个字符的出现次数,最后遍历哈希表,将出现次数等于字符串数组长度的字符加入结果集合中。
Java代码如下:
class Solution {
public List<String> commonChars(String[] words) {
List<String> res = new ArrayList<>();
int[] count = new int[26];
for (char c : words[0].toCharArray()) {
count[c - 'a']++;
}
for (int i = 1; i < words.length; i++) {
int[] cnt = new int[26];
for (char c : words[i].toCharArray()) {
cnt[c - 'a']++;
}
for (int j = 0; j < 26; j++) {
count[j] = Math.min(count[j], cnt[j]);
}
}
for (int i = 0; i < 26; i++) {
for (int j = 0; j < count[i]; j++) {
res.add(String.valueOf((char)('a' + i)));
}
}
return res;
}
}
阅读全文