[刷题班] LeetCode1002. 查找共用字符
题目描述
思路:哈希(数组)
关键字:“小写字母”、“出现频率”这些关键字都是为哈希法量身定做的。
求每个字符在所有字符串中最小出现的次数。最小次数为几就在结果集中添加几次该字符。
方法一:
class Solution {
public List<String> commonChars(String[] words) {
List<String> res = new ArrayList<>();
int[] arr = new int[26];
for (char c : words[0].toCharArray()) {
arr[c - 'a'] ++;
}
// "label" "roller"
for (int i = 1; i < words.length; i ++) {
// "label"
int[] temp = new int[26];
for (char c : words[i].toCharArray()) {
temp[c - 'a'] ++;
}
// arr 与 temp进行打擂,取对应位置的最小值
for (int j = 0; j < 26; j ++) {
arr[j] = Math.min(arr[j], temp[j]);
}
}
for (int i = 0; i < arr.length; i ++) {
int times = arr[i];
for (int j = 0; j < times; j ++) {
res.add(String.valueOf((char)('a' + i)));
}
}
return res;
}
}
本文作者:keyongkang
本文链接:https://www.cnblogs.com/keyongkang/p/17952142
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步