查找常用字符(給定僅有小寫字母組成的字符串數組 A,返回列表中的每個字符串中都顯示的全部字符(包括重復字符)組成的列表。例如,如果一個字符在每個字符串中出現 3 次,但不是 4 次,則需要在最終答案中包含該字符 3 次。)


給定僅有小寫字母組成的字符串數組 A,返回列表中的每個字符串中都顯示的全部字符(包括重復字符)組成的列表。
例如,如果一個字符在每個字符串中出現 3 次,但不是 4 次,則需要在最終答案中包含該字符 3 次。
你可以按任意順序返回答案。
示例 1:
輸入:["bella","label","roller"]
輸出:["e","l","l"]
示例 2:
輸入:["cool","lock","cook"]
輸出:["c","o"]

  1. 1 <= A.length <= 100
  2. 1 <= A[i].length <= 100
  3. A[i][j] 是小寫字母

思路:第一步:每個字符串都是由26個字符構成,所以我們定義兩個整型數組arr(表示最后統計每個字符出現的次數)和array(表示每一個字符串中字符出現的個數),將arr數組初始化為100,array初始化為0;

第二步:遍歷字符數組s,統計該字符串中每個字符出現個數,賦給array(每次統計前將array初始化為0),最后將arr[i] = Math.min(array[i],arr[i]) (由於我們只統計每個字符在每個字符串中出現的次數,所以要取最小值);

第三步:對arr數組進行遍歷,把每個字符添加list集合中;

代碼如下:

public static List<String> commonChars(String[] s) { //定義並初始化兩個數組arr和array
         int[] arr = new int[26]; int[] array = new int[26]; for(int i = 0;i<26;i++) { arr[i] = 100; array[i] = 0; } for(String str : s) { //初始化array
             for(int i = 0;i<26;i++) { array[i] = 0; } //統計每個字符出現的次數
             for(int i = 0;i<str.length();i++) { ++array[str.charAt(i) - 'a']; } //統計每個字符在當前字符串之前所有字符串出現的次數,以出現最少次數為標准賦值
             for(int i = 0;i<26;i++) { arr[i] = Math.min(arr[i], array[i]); } } List<String> list = new ArrayList<String>(); //遍歷arr
         for(int i = 0;i<26;i++) { //j<arr[i] 判斷每個字符出現個數,然后進行添加
             for(int j = 0;j<arr[i];j++) { String ch = ""; ch+=(char)('a'+i); list.add(ch); } } return list; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM