[LeetCode] Longest Common Prefix

这里写图片描述
字符串的最长公共前缀
先写以个两个string比较的,之后O(n)在vector中滑动比较

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        int i = 1;
        string com_s;
        if(strs.size()==0)  return string("");
        if(strs.size()==1)  return strs[0];
        com_s = strs[0];
        while(i!=strs.size())
            com_s = check_two(com_s,strs[i++]);
        return com_s;


    }
    string check_two(string &s1, string &s2){
        int i;
        for(i = 0; i != min(s1.size(),s2.size()); ++i)
            if(s1[i]!=s2[i])
                break;
        return s1.substr(0,i);
    }
};

当然用c写也是可以的check_two部分找到不相同的字符时要注意是否为\0,是\0就可以直接返回s1,没有到达\0将其变成\0即可

#define min(x,y) (x)<(y)?(x):(y)
char* check_two(char *s1, char *s2){
    int i =0;
    char *tmp;
    if(strlen(s1)>strlen(s2)){
        tmp = s1;
        s1 = s2;
        s2 = tmp;
    }
    for(i = 0; i != strlen(s1); ++i)
        if(s1[i]!=s2[i])
            break;
    if(i!=strlen(s1))
        s1[i] = '\0';
    return s1;

}
char* longestCommonPrefix(char** strs, int strsSize) {
    if(strsSize==1) return strs[0];
    if(strsSize==0) return "";
    char *com_s = strs[0];
    int i =1;
    while(i!=strsSize)
        com_s = check_two(com_s,strs[i++]);
    return com_s;
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whzyb1991/article/details/46820749
个人分类: LeetCode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

[LeetCode] Longest Common Prefix

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭