zoukankan      html  css  js  c++  java
  • Leetcode 1002. 查找常用字符

    1002. 查找常用字符

     
     
    • 用户通过次数301
    • 用户尝试次数324
    • 通过次数303
    • 提交次数480
    • 题目难度Easy

    给定仅有小写字母组成的字符串数组 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<vector<int>> m(A.size(),vector<int>(26,0));
            for(int i=0;i < A.size();i++){
                for(int j=0;j < A[i].size();j++){
                    m[i][A[i][j]-97]++;
                    // cout << A[i][j] << " " << A[i][j]-97 << " ";
                }
            }
            vector<string> res;
            for(int i=0;i < A[0].size();i++){
                
                int flag = 1;
                for(int k=0;k < m.size();k++){
                    if(!m[k][A[0][i]-97]){flag=0;break;} //没有这个char
                }
                if(flag){
                    for(int k=0;k < m.size();k++){
                        m[k][A[0][i]-97]--;
                    }
                    cout << A[0][i] << " ";
                    string temp = " ";temp[0] = A[0][i];
                    res.push_back(temp);
                }
            }
            
            
            return res;
            
        }
    };

    _屎山??

    class Solution {
    public:
        int cnt[26],num[26];
        vector<string> commonChars(vector<string>& A) {
            int i;
            for (i=0;i<26;++i) cnt[i]=100000;
            for (auto s:A){
                for (i=0;i<26;++i) num[i]=0;
                for (int i=0;i<(int)s.length();++i){
                    num[s[i]-'a']++;
                }
                for (i=0;i<26;++i) cnt[i]=min(cnt[i],num[i]); // 数到的重复的个数取最少的
            }
            vector<string> vec;
            for (i=0;i<26;++i)if(cnt[i]>0){
                string s="";
                char ch='a'+i;
                s=s+ch;
                for (int j=0;j<cnt[i];++j){
                    vec.push_back(s);
                }
            }
            return vec;
        }
    };

    ——这个复杂度比我低挺多了。

  • 相关阅读:
    Java中Filter、Servlet、Listener的学习 (转)
    Servlet 获取商品信息作业
    Servlet 注册与提交作业
    jsp servlet的区别和联系(转)
    用户注册验证留言程序
    作业1
    简单新闻发布系统
    webform 增速删改查 方法
    存取数据库图片
    打印 保存
  • 原文地址:https://www.cnblogs.com/cunyusup/p/10640103.html
Copyright © 2011-2022 走看看