查找字符串?dāng)?shù)組中的最長(zhǎng)公共前綴。
如果不存在公共前綴,返回空字符串 ""。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int count=strs.size();
string ret="";
if(count==0){
return "";
}
int length=strs[0].size();
for(int j=0;j<length;j++){
char temp=strs[0][j];
for(int i=0;i<count;i++){
if(strs[i][j]!=temp||strs[i][j]=='\0'){
return ret;
}
}
ret.push_back(temp);
}
return ret;
}
};
要注意定勢(shì)思維,不要一上來(lái)就是先遍歷strs中,要思考一下。這道題明顯先遍歷各個(gè)字符串內(nèi)部的字符更方便。
第二種方法,有點(diǎn)動(dòng)態(tài)規(guī)劃的意思。兩兩比較得到公共前綴,再把這個(gè)前綴做和下一個(gè)string比較拿到公共前綴,以此類推。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string temp="";
int size=strs.size();
if(size==0) return temp;
if(size==1) return strs[0];
temp=pubString(strs[0],strs[1]);
for(int i=2;i<size;i++){
if(temp=="") return temp;
temp=pubString(temp,strs[i]);
}
return temp;
}
string pubString(string s1,string s2){
int l1=s1.size();
int l2=s2.size();
int count=l1<l2?l1:l2;
string ret="";
for(int i=0;i<count;i++){
if(s1[i]==s2[i]){
ret.push_back(s1[i]);
}else{
return ret;
}
}
return ret;
}
};