1.循环遍历比较两个字符串。依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
//如果传入进的strs为空 return ""
if(!strs.size()) return "";
//如果不为空 开启判断 定义strs[0]为prefix
string prefix = strs[0];
int count = strs.size();
for(int i=1;i<count;i++){
prefix = compareCommonPredix(prefix,strs[i]);
//如果prefix为空 break
if(!prefix.size()) break;
}
return prefix;
}
string compareCommonPredix(string str1,string str2){
int length=min(str1.length(),str2.length());
int index=0;
while(index<length&&str1[index]==str2[index]){
index++;
}
return str1.substr(0,index);
}
};
2.排序后比较首尾两个字符串
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
//比较最小的和最大的字符串共同即可
sort(strs.begin(),strs.end());
int count=strs.size();
string minStr = strs[0];
string maxStr = strs[count-1];
int lengthmin=(minStr.length(),maxStr.length());
int index=0;
while(index<lengthmin&&minStr[index]==maxStr[index]){
index++;
}
return minStr.substr(0,index);
}
};