最长公共前缀

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

方法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;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-26 16:06
已编辑
快手电商 后端 23k-35k
点赞 评论 收藏
分享
M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务