题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 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"