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

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

示例 1:

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

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
 string longestCommonPrefix(vector<string>& strs)
{
    if(strs.empty())
        return "";
        //return NULL;
    int min = strs[0].size();
    for(int i=0;i<strs.size();i++)
    {
        if(strs[i].size()<min)
            min=strs[i].size();
    }
    string com;
    for(int j=0;j<min;j++)
    {
        vector<string>::iterator i = strs.begin();
        char c = (*i)[j];
        while(i<strs.end())
        {
            if(c==(*i)[j])
            {
                i++;
            }
            else
                return com;
        }
        com+=c;
    }
    return com;
}

自己程序的思路:我们首先要判断字符串中最短的那个,以它的长度作为我们遍历位数的最大值。然后依次对每个字符串的每一位做判断,看是否相等,如果相等,就算一位,不相等,就停止遍历。需要注意的地方是,空字符串的返回和return NULL是两个不同的概念。return " "表示会创建一个对象,内容是" ",有内存空间,但是return NULL代表直接返回一个空指针,没有内存空间,没有对象。上述程序如果写成return NULL 的话,会出现错误terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid

相关文章:

  • 2022-12-23
  • 2021-12-21
  • 2021-06-03
  • 2022-12-23
  • 2021-10-27
  • 2021-04-22
  • 2021-09-12
  • 2021-11-12
猜你喜欢
  • 2020-01-01
  • 2021-06-30
  • 2021-04-02
  • 2021-06-01
  • 2022-03-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案