解法一:纵向比较
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())
return "";
for(int idex=0;idex<strs[0].size();idex++)
for(int i=1;i<strs.size();i++)
if(strs[0][idex]!=strs[i][idex])
return strs[0].substr(0,idex);
return strs[0];
}
};
解法二:横向比较
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())
return "";
int right=strs[0].size()-1;
for(int i=1;i<strs.size();i++)
{
for(size_t j=0;j<=right;j++)
if(strs[0][j]!=strs[i][j])
{
right=j-1;
break;
}
if(right==-1)
break;
}
return strs[0].substr(0,right+1);
}
};
解法三:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int len = strs.size();
int m=INT_MIN;
string prefix="";
if(strs.empty()) return prefix;
for(auto& x:strs) {
m = m < x.size() ? m : x.size();
}
bool flag=true;
for(int j=0;j<m;j++){
char c = strs[0][j];
for(auto& x:strs){
if(x[j]!=c) {
flag=false;
// break;
}
}
if(flag)
prefix+=c;
}
return prefix; } };