2、最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例1
输入: ["flower","flow","flight"]
输出: "fl"
示例2
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
Solution
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string str="";
int i=0;
int over=0;
if(strs.size()==0)
return str;
if(strs.size()==1)
return strs[0];
while(1){
for(int j=1;j<strs.size();j++){
if(i==strs[j].size()){
over=1;
break;
}
if(strs[j][i]==strs[0][i]){
if(j==strs.size()-1){
str+=strs[0][i];
i++;
}
else
continue;
}
else{
over=1;
break;
}
}
if(over)
return str;
}
}
};
解题思路:
针对输入的字符串组存在的特殊情况进行特殊处理,如果没有字符串,则直接返回空,如果只有一个字符串,则直接将该字符串返回即可。
其余情况,设两个变量,分别代表横向和纵向,以第一个字符串做参考,检查其余字符串,有以下情况时可结束检查,并返回。1、横向变量的值超过某一字符串的最长长度;2、纵向比较时发现不相等的情况;如果字符比较相等,且到达最后一个字符串,则更新返回字符串,继续进行比较。