码迷,mamicode.com
首页 > 编程语言 > 详细

面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。(c++实现)

时间:2018-11-11 00:01:19      阅读:814      评论:0      收藏:0      [点我收藏+]

标签:ios   面试   comm   prefix   bre   dog   long   vector容器   数组   

实例说明

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

 

面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。(c++实现)

标签:ios   面试   comm   prefix   bre   dog   long   vector容器   数组   

原文地址:https://www.cnblogs.com/mydomain/p/9940963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!