14. 最长公共前缀
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
解题思路:
strs中的每个元素中的字母都依次遍历;
长度假设为其中任意一个元素的长度即可(其实能找到最短的元素,使用他的长度是最好的),但是使用任意一个也可以,我们每次比较元素中某个位置——j处的字母时,都看一下,这个元素是否在这个位置处有字母,没有的话,返回false就行;
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int num=strs[0].size(); //以第一个字符串长度为标准
int strs_num=strs.size();
string res;
for(int j=0;j<num;j++){//某个元素的地几个字母
for(int i=1;i<strs_num;i++){//某个元素,因为j是第一个[0]元素的长度,所以比较时,strs[i].size()<j,即i从1开始与j比较,保证每个元素都被比较到;
if(strs[i].size()<=j || strs[i][j]!=strs[i-1][j]){//遍历元素所有的char,ru
return res;
}
}
res.push_back(strs[0][j]);
}
return res;
}
};