文章目录
- 题目描述
- 法一 横向比较
题目描述
法一 横向比较
将多个字符串比较转换为两两比较,如果比较完最长公共前缀已经是空串,则最长公共前缀一定是空串,因此不需要继续遍历剩下的字符串,直接返回空串。
string longestCommonPrefix(vector<string>& strs){
if(!strs.size()){
return "";
}
int n=strs.size();
string prefix = strs[0];
for(int i=1;i<n;i++){
prefix = longestCommonPrefix(prefix, strs[i]);
if(!prefix.size()){
break;
}
}
return prefix;
}
string longestCommonPrefix(const string& str1, const string& str2){ //引用传递 效率更高
int n = min(str1.size(), str2.size());
int idx=0;
while(idx<n && str1[idx]==str2[idx]){
idx++;
}
return str1.substr(0, idx);
}