力扣--最长公共前缀

最长公共前缀

Category Difficulty Likes Dislikes
algorithms Easy (39.25%) 1495 -

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

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

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

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

提示:

  • 0 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

代码

/*
 * @lc app=leetcode.cn id=14 lang=cpp
 *
 * [14] 最长公共前缀
 */

// @lc code=start
class Solution
{
public:
    string longestCommonPrefix(vector<string> &strs)
    {
        //公共前缀
        string str, temple;
        //重合次数 n=0;
        int n = 0;
        //防止数据为[] 
        if (!strs.size())
            return "";
        //赋初值 不赋""的原因是防止输入["a"],返回值为""
        str = strs[0];
        temple = strs[0];

        for (int i = 0; i < strs.size(); i++)
        {
            //如果AB的公共前缀大于BC的公共前缀 取BC公共前缀
            if (str.length() > temple.length())
            {
                
                str = temple;                
                if (str == "")
                    break;
            }

            if (i + 1 < strs.size())
            {
                //初始化
                temple = "";
                for (int j = 0; j < min(strs[i].length(), strs[i + 1].length()); j++)
                {
                
                    if (strs[i].at(j) == strs[i + 1].at(j))
                    {
                        temple += strs[i].at(j);
                    }
                    else
                    {
                        break;
                    }
                
                }
            }
        }
        return str;
    }
    
};
// @lc code=end

posted @ 2021-03-13 17:28  PRINT王哲  阅读(59)  评论(0编辑  收藏  举报
Live2D