面試題:編寫一個函數來查找字符串數組中的最長公共前綴。 若是不存在公共前綴,返回空字符串 ""。(c++實現)

實例說明ios

示例 1:spa

輸入: ["flower","flow","flight"]
輸出: "fl"

示例 2:code

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

說明:對象

全部輸入只包含小寫字母 a-z 。blog

實現方法:ci

#include<iostream> #include<vector> #include<string>
using namespace std; string longestCommonPrefix(vector<string>& strs) { string re=""; if(strs.empty()) return re; if(strs.size()==1) { re+=strs.at(0); return re; } int jishu=0; int arrsize=strs.at(0).size(); for(int p=1;p<strs.size();p++) { if(arrsize>strs.at(p).size()) arrsize=strs.at(p).size(); } for(int k=0,zm=0,jn=0;k<strs.size()-1;k++) { while(zm<arrsize&&strs[k][zm]==strs[k+1][zm]) { jn++; zm++; if(zm>=arrsize) break; } if(k==0) jishu=jn; else if(jn<jishu) jishu=jn; zm=0; jn=0; } for(int ff=0;ff<jishu;ff++) re+=strs[0][ff]; return re; } int main() { //vector<string> str; //vector<string>::iterator it; 
string a[3]={"flower","flow","flight"}; //string a[3]={"dog","racecar","car"}; //string a="a";
vector<string> str; //str.push_back(a); //cout<<str.at(0)<<endl;

for(int nn=0;nn<3;nn++) { str.push_back(a[nn]); //cout<<str.at(nn)<<endl;
} /* string putstr; //用戶自定義收到輸入vector容器中的string類對象。 while(cin>>putstr) { str.push_back(putstr); } */
string bbbb=longestCommonPrefix(str); cout<<bbbb<<endl; return 0; }
相關文章
相關標籤/搜索