• 力扣(LeetCode)查找常用字符 个人题解


    给定仅有小写字母组成的字符串数组 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] 是小写字母

    这题拿到手,一开始的思路错了,没有考虑多次出现的字符只重复部分次数的情况。后面参考了评论区,找到了正确的思路。

    同样是记录第一个字符串出现字符的次数作为基准,然后依次比较剩下的字符串中字符的出现次数。取字符串中字符出现次数的最小值作为基准进行下一步判断。

    最后输出基准内的字母,完成题目。代码如下:

    class Solution {
    public:
        vector<string> commonChars(vector<string>& A) {
            vector<string> result;
            int p[26];
            fill(p,p+26,0);
            //记录第一个字符串内的出现次数
            for(char c: A[0]){
                p[c-'a']++;
            }
            for(int i=1; i<A.size(); i++){
                int tmp[26];
                fill(tmp,tmp+26,0);
                for(char c: A[i]){
                    tmp[c-'a']++;
                }
                for(int j=0; j<26; j++){
                    if(p[j]>tmp[j])
                        p[j] = tmp[j];
                }
            }
            for(int i=0; i<26; i++){
                if(p[i]>0){
                    for(int j=0; j<p[i]; j++){
                        string tmp = "";
                        tmp += char('a'+i);
                        result.push_back(tmp);
                    }
                }
            }
            return result;
        }
    };
  • 相关阅读:
    深入浅出前端本地储存
    移动端H5开发常用技巧总结
    Web API
    嵌入式软件工程师面试题目整理(二)
    嵌入式软件工程师面试题目整理(一)
    扒一扒ELF文件
    SpringCloud — (1) 服务治理Eureka
    asp.net练习①——Application聊天室
    js数字金额转换为大写金额
    SQL触发器
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10816366.html
Copyright © 2020-2023  润新知