14-最长公共前缀

题目:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

解答:

 

string longestCommonPrefix(vector<string>& strs) 
{
    int size = strs.size();
    if (size == 0)
        return "";
    else if (size == 1)
        return strs.at(0);

    int len = strs.at(0).length();
    if (len == 0)
        return "";

    bool bContinue = true;
    int i = 0;
    for (i = 0; i < len; i++)
    {
        char cI = strs.at(0).at(i);
        for (int j = 1; j < size; j++)
        {
            if (strs.at(j).length() <= i)
            {
                bContinue = false;
                break;
            }
                
            if (strs.at(j).at(i) == cI)
                continue;

            bContinue = false;
            break;
        }
        if (!bContinue)
            break;
    }

    if (i == 0)
        return "";

    return strs.at(0).substr(0, i);
}

上面的判断有些复杂,还使用了一个标志位,修改如下:

string longestCommonPrefix2(vector<string>& strs)
{
    int size = strs.size();
    if (size == 0)
        return "";
    else if (size == 1)
        return strs.at(0);

    string result = "";
    for (int i = 0; i < strs.at(0).size(); i++)
    {
        char c = strs.at(0).at(i);
        for (int j = 1; j < size; j++)
        {
            if (strs.at(j).length()>i)
            {
                if (strs.at(j).at(i) != c)
                    return result;
            }
            else
            {
                return result;
            }
        }
        result += c;
    }
    return result;
}

吐槽下代码提交后的排名,感觉波动很大,不准。。。

posted @ 2020-11-11 15:34  adfas  阅读(86)  评论(0编辑  收藏  举报