Write a function to find the longest common prefix string amongst an array of strings.
求字符串最长公共前缀,这题也没啥好说的,就代码可读性上说一说好了。
我写的虽然也是4ms虽然也没错,但是可读性上来说相对差了一点
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int n=strs.size();
if(n==0) return "";
int minlen=INT_MAX,pos=0;
for(int i=0;i<n;i++){
if(strs[i].size()==0) return "";
else if(strs[i].size()<minlen){
minlen=strs[i].size();
pos=i;
}
}
//检查前i位
for(int i=0;i<minlen;i++){
//检查每一个字符串
for(int j=1;j<n;j++){
if(strs[j][i]!=strs[0][i])
return strs[j].substr(0,i);
}
}
return strs[pos];
}
};
注意看标准解答的做法,但是…它没有判断长度
这样还是不太好,慎用…
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int n=strs.size();
if(n==0) return "";
for(int i=0;i<strs[0].size();i++){
//检查每个前缀
for(int j=1;j<n;j++){
if(strs[j][i]!=strs[0][i])
return strs[j].substr(0,i);
}
}
return strs[0];
}
};