最长公共前缀

查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        int count=strs.size();
        string ret="";
        if(count==0){
            return "";
        }
        int length=strs[0].size();
        for(int j=0;j<length;j++){
            char temp=strs[0][j];
             for(int i=0;i<count;i++){
                 if(strs[i][j]!=temp||strs[i][j]=='\0'){
                     return ret;
                 }
             }
             ret.push_back(temp);
        }
        return ret;
    }
};

要注意定势思维,不要一上来就是先遍历strs中,要思考一下。这道题明显先遍历各个字符串内部的字符更方便。
第二种方法,有点动态规划的意思。两两比较得到公共前缀,再把这个前缀做和下一个string比较拿到公共前缀,以此类推。

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string temp="";
        int size=strs.size();
        if(size==0) return temp;
        if(size==1) return strs[0];
        temp=pubString(strs[0],strs[1]);
        for(int i=2;i<size;i++){
            if(temp=="") return temp;
            temp=pubString(temp,strs[i]);
        }
        return temp;
    }
    string pubString(string s1,string s2){
        int l1=s1.size();
        int l2=s2.size();
        int count=l1<l2?l1:l2;
        string ret="";
        for(int i=0;i<count;i++){
            if(s1[i]==s2[i]){
                ret.push_back(s1[i]);
            }else{
                return ret;
            }
        }
        return ret;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容