【每日一算法】最长公共前缀

微信改版,加星标不迷路!

【每日一算法】最长公共前缀_第1张图片

每日一算法-最长公共前缀

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

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

示例 1:

 
   

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

示例 2:

 
   

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

说明:

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

解析

? 我们首先要判断字符串中最短的那个,以它的长度作为我们遍历位数的最大值。然后依次对每个字符串的每一位做判断,看是否相等,如果相等,就算一位,不相等,就停止遍历。

实现代码

 
   

 
   

 
   

class Solution {
public:
   string longestCommonPrefix(vector<string>& strs) {
       if(strs.empty())
       return "";
       //return NULL;
       //找到所有字符的最小值
       int min = strs[0].size();
       for(int i=0;i        {
           if(strs[i].size()                min=strs[i].size();
       }
       
       string result = "";
       //判断每一个字符串中的第j位是否相等
       for(int j=0;j        {
           vector<string>::iterator a = strs.begin();
           char c = (*a)[j];
           
           while(a!=strs.end()){
               if(c == (*a)[j]){
                   a++;
               }else{
                   return result;
               }
           }
           result += c;
       }
       return result;
   }
};

需要注意的地方


需要注意的地方是,空字符串的返回和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


640?

今日问题  

640?


元旦节你准备如何过?

是外出旅游放松?

还是认真学习?


打卡格式:打卡第n天,答:...



为什么打卡?戳下面你就知道了!



21/天/养/一/个/好/习/惯


640?wx_fmt=png

你可能感兴趣的:(【每日一算法】最长公共前缀)