leetcode14 最长公共前缀

题意是求一个字符串数组的最长共同前缀,自己的思路比较简单,遍历就完事。贴代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) 
    {
        int n = strs.size();
        string result = "";
        int t = 0;
        if(!n)
        return result;
        while(t<strs[0].length())
        {
            char temp = strs[0][t];
            for(int i = 1 ; i < n ; i++)
            {
                if(strs[i][t]!=temp)
                return result;
            }
            result.insert(result.end(),temp);
            t++;
        }
        return result;
    }
};

还有一个很秀的方法,首先将数组中的所有元素排序,然后对比最前与最后两个字符串,两个的公共部分即为所有字符串的公共部分。贴代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) 
    {
        int n = strs.size();
        string result = "";
        if(strs.empty())
        return result;
        sort(strs.begin(),strs.end());
        string st = strs.front(), en = strs.back();
        int i, num = min(st.size(), en.size());
        for(i = 0; i < num && st[i] == en[i]; i ++);
        result = st.substr(0,i);
        return result;
    }
};

 

posted @ 2021-03-13 17:33  zhaohhhh  阅读(43)  评论(0)    收藏  举报