【LeetCode每日一题】[简单]1002. 查找常用字符

【LeetCode每日一题】[简单]1002. 查找常用字符

1002. 查找常用字符

题目来源
算法思想:字符串

题目:
在这里插入图片描述
思路:计数统计字母出现的最小频率,然后根据频率生成答案

java代码

class Solution {
    
    
    public List<String> commonChars(String[] A) {
    
    
        int[] minfreq = new int[26];//用于记录每个字母出现的最小频率
        Arrays.fill(minfreq, Integer.MAX_VALUE);//用来记录每个字母出现的最小频率
        for (String word: A) {
    
    //遍历字符串数组
            int[] freq = new int[26];//暂存当前字符串各个字母的出现频率
            int length = word.length();
            for (int i = 0; i < length; ++i) {
    
    
                char ch = word.charAt(i);
                ++freq[ch - 'a'];
            }
            for (int i = 0; i < 26; ++i) {
    
    //与之前的进行比较,保存较小的频率
                minfreq[i] = Math.min(minfreq[i], freq[i]);
            }
        }

        List<String> ans = new ArrayList<String>();//保存答案
        for (int i = 0; i < 26; ++i) {
    
    
            for (int j = 0; j < minfreq[i]; ++j) {
    
    //根据保存数组,生成最后字符串
                ans.add(String.valueOf((char) (i + 'a')));
            }
        }
        return ans;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39457586/article/details/109080560