题目: 最长公共前缀
描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
leetcode链接
方法一:枚举
我们知道公共最长前缀的最大长度为最短单词的长度,所以我们从0到最短单词的长度枚举出每一个公共前缀的长度,期间如果发现不匹配的情况,停止遍历,输出最长公共前缀
时间复杂度o(n²)
空间复杂度o(1)
string longestCommonPrefix(vector<string>& strs) {
int min = strs[0].size();
for(int i=1;i<strs.size();i++){
if(strs[i].size()<min){
min = strs[i].size();//找出最长公共前缀的最大长度
}
}
for(int j = 0;j<min;j++){
for(int i=0;i<strs.size()-1;i++){
if(strs[i][j] != strs[i+1][j]){
return strs[i].substr(0,j);//发现不匹配时,最长公共前缀长度为j
}
}
}
return strs[0].substr(0,min);//如果没有找到不匹配的单词,那么最长前缀就是长度最短的单词
}