最长公共前缀

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

方法1:令公共串等于第一个字符串,然后分别于之后的字符串对比,找出两者的公共部分,直到公共串为空,或者比较到了最后一个字符串返回结果。

string longestCommonPrefix(vector<string>& strs) {
        if (strs.empty())
            return {};
        string pubStr = strs[0];
        for (int i = 1; i < strs.size(); ++i)
        {
            if (pubStr.empty())
                return {};
            int minIndex = min(pubStr.size(), strs[i].size());
            int j = 0;
            while (j < minIndex && pubStr[j] == strs[i][j])
            {
                ++j;
            }
            if (j <= pubStr.size())
            {
                pubStr.erase(j);
            }
        }
        return pubStr;
    }

方法2:先排序,后比较头尾即可

 string longestCommonPrefix(vector<string>& strs) {
        if (strs.empty())
            return {};
        sort(strs.begin(), strs.end());
        string firstStr = strs.front(), lastStr = strs.back();
        int maxIndex = min(firstStr.size(), lastStr.size());
        string pubStr;
        int i = 0;
        while (i < maxIndex && firstStr[i] == lastStr[i])
        {
            pubStr+= firstStr[i];
            ++i;
        }
        return pubStr;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务