[LC] 1002. Find Common Characters

Given an array A of strings made only from lowercase letters, return a list of all characters that show up in all strings within the list (including duplicates).  For example, if a character occurs 3 times in all strings but not 4 times, you need to include that character three times in the final answer.

You may return the answer in any order.

 

Example 1:

Input: ["bella","label","roller"]
Output: ["e","l","l"]

Example 2:

Input: ["cool","lock","cook"]
Output: ["c","o"]


class Solution {
    public List<String> commonChars(String[] A) {
        List<String> res = new ArrayList<>();
        if (A == null || A.length == 0) {
            return res;
        }
        int[] lowerCaseArr = new int[26];
        for (char c: A[0].toCharArray()) {
            lowerCaseArr[c - 'a'] += 1;
        }
        for (int i = 1; i < A.length; i++) {
            int[] curDict = new int[26];
            for (char c: A[i].toCharArray()) {
                curDict[c - 'a'] += 1;
            }
            for (int j = 0; j < lowerCaseArr.length; j++) {
                lowerCaseArr[j] = Math.min(lowerCaseArr[j], curDict[j]);
            }
        }
        
        for (int i = 0; i < lowerCaseArr.length; i++) {
            while (lowerCaseArr[i] > 0) {
                res.add(Character.toString((char)(i + 'a')));
                lowerCaseArr[i] -= 1;
            }
        }
        return res;
    }
}

 

posted @ 2020-01-18 11:29  xuan_abc  阅读(146)  评论(0编辑  收藏  举报