1. 程式人生 > >面試題:編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 ""。(c++實現)

面試題:編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 ""。(c++實現)

例項說明

示例 1:

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

示例 2:

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

說明:

所有輸入只包含小寫字母 a-z 。

實現方法:

#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; }