LeetCode -- 14 最长公共前缀

题目描述:

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

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

示例 1:

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

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

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

代码:

方法:遍历vector进行比较

class Solution{
    public:
        string longestCommonPrefix(vector<int>& strs){
            if(!strs.size()){
                return "";      // 如果vector容器中没有元素直接返回空字符串
            }
            string Prefix = strs[0];    
            int count = strs.size();
            for(int i = 1 ; i < count ; i ++)
            {
                prefix = longest(prefix,strs[i]);   //引入了一个比较2个字符串的函数,找出最长公共前缀
                if(!prefix.size()) // 一旦发现为空,直接跳出循环即可
                {
                    break;
                }
             }
             return prefix; 
        }
        
        string longest(const string& str1, const string& str2)
        {
            int length = min(str1.size(),str2.size());
            int index = 0;
            while(index < length && str1[index] == str2[index])
            {
                ++index;
            }
            return str1.substr(0,index);
         } 
};

哈,又到了总结时间

1:学到了str.substr(num,num),这个函数,

里面有2个参数,第一个参数是从下标为第几位开始,第二个参数是,从第一个参数开始持续几个数

百度解释为:主要功能是复制子字符串,要求从指定位置开始,并具有制定长度

举个栗子:

str = "0,1,2,3,4,5,6,7,8,9"

str1 = str.substr(5,3)

str1 = "5,6,7" 

str2 = str.substr(5)

str2 = "5,6,7,8,9"

猜你喜欢

转载自www.cnblogs.com/wtzmz/p/13368996.html