2020-10-14 打卡題-查找重復字符
給定僅有小寫字母組成的字符串數(shù)組 A,返回列表中的每個字符串中都顯示的全部字符(包括重復字符)組成的列表露泊。
例如贱除,如果一個字符在每個字符串中出現(xiàn) 3 次和敬,但不是 4 次视粮,則需要在最終答案中包含該字符 3 次。
你可以按任意順序返回答案土浸。示例 1:
輸入:["bella","label","roller"]
輸出:["e","l","l"]示例 2:
輸入:["cool","lock","cook"]
輸出:["c","o"]提示:
1 <= A.length <= 100
1 <= A[i].length <= 100
A[i][j] 是小寫字母
-
題解:利用哈希方式記錄每個字符串在每個字符上的次數(shù)罪针,最后根據(jù)最小次數(shù)輸出字符即可
public class CommonChars {
public List<String> commonChars(String[] A) {
List<String> result = new ArrayList<>();
int mark[][] = new int[A.length][26];
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A[i].length(); j++) {
mark[i][A[i].charAt(j)-'a'] +=1;
}
}
// for (int i = 0; i < A.length; i++) {
// for (int j = 0; j < 26; j++) {
// System.out.print(mark[i][j]+" ");
// }
// System.out.println();
// }
for (int i = 0; i < 26; i++) {
int min_cnt = Integer.MAX_VALUE;
boolean cnt_flag = true;
for (int j = 0; j < A.length; j++) {
if(mark[j][i] == 0){
cnt_flag = false;
break;
}
else{
min_cnt = Math.min(min_cnt,mark[j][i]);
}
}
if(min_cnt > 0 && cnt_flag){
for (int j = 0; j < min_cnt; j++) {
result.add(String.valueOf((char) (i + 'a')));
}
}
}
return result;
}
}