zoukankan      html  css  js  c++  java
  • Find Common Characters

    题目链接

    Find Common Characters - LeetCode

    注意点

    • 不能单纯的以字母出现的次数来判断是否是公共的字母

    解法

    解法一:将第一个字符串的每个字母逐个在其他字符串中查找,如果所有的字符串都含有就加入res。时间复杂度O(n^2),n是所有字符串的长度之和。

    class Solution {
    public:
        vector<string> commonChars(vector<string>& A) {
            vector<string> res;
            if(A.size() == 0) return res;
            int i,j,k;
            for(i = 0;i < A[0].size();i++)
            {
                for(j = 1;j < A.size();j++)
                {
                    for(k = 0;k < A[j].size();k++)
                    {
                        if(A[j][k] == A[0][i]) 
                        {
                            A[j][k] -= 32;
                            break;
                        }
                    }
                    if(k >= A[j].size()) break; 
                }
                if(j >= A.size())
                {
                    string temp = "";
                    res.push_back(temp+A[0][i]);
                }
            }
            return res;
        }
    };
    

    解法二:先统计第一个字符串中所有字母出现的次数,然后逐个统计其他字符串中字母出现的次数,每统计完一个字符串对每个字母取较小的出现的次数。时间复杂度O(n)

    class Solution {
    public:
        vector<string> commonChars(vector<string>& A) {
            vector<string> res;
            vector<int> count(26,0);
            if(A.size() == 0) return res;
            int i,j;
            for(i = 0;i < A[0].size();i++) count[A[0][i]-'a']++;
            for(i = 1;i < A.size();i++)
            {
                vector<int> tempCount(26,0);
                for(j = 0;j < A[i].size();j++) tempCount[A[i][j]-'a']++;
                for(j = 0;j < 26;j++) count[j] = min(count[j],tempCount[j]);
            }
            for(i = 0;i < 26;i++)
            {
                for(j = 0;j < count[i];j++) res.push_back(string(1,i+'a'));
            }
            return res;
        }
    };
    

    小结

    • 这是今天早上周赛的第一道题,我做了半个小时,第一名只做了两分钟...
  • 相关阅读:
    LINQ基础——WHERE子句
    LINQ基础——LET子句
    LINQ基础——FROM子句
    Guid(全局统一标识符)
    ??运算符
    多线程的AutoResetEvent
    线程池(ThreadPool)
    Mutex
    Monitor类实现线程同步
    【java框架】MyBatis(7)--MyBatis注解开发
  • 原文地址:https://www.cnblogs.com/multhree/p/10467515.html
Copyright © 2011-2022 走看看