最长公共前缀

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

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

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务