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

浪裡飛發表於2018-11-10

例項說明

示例 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;
}

 

相關文章