题目:Write a function to find the longest common prefix string amongst an array of strings.(写一个求最长前缀的函数)
思路:两两相比求最长前缀,如有字符串:"my_date","my_daay","my_day","my_dmonth","my_dyear","my_dmouse",将第一个子串以第二个字串相比,求出最长子串。再将第二个与第三个相比求出子串,依次类推。每次求得的最长子串只会比前一次小,若是大,则不予保留。
代码:
<span style="font-size:14px;">#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()==0) return "";//为空则输出空
int Maxlength=strs[0].size();
for(auto iter=strs.begin();iter!=strs.end()-1;++iter)
{
auto iter1=iter+1;
int length=0;
for(int j=0; j<(*iter).size();++j)
{
if((*iter)[j]==(*iter1)[j])
{
length++;
}
else
{
break;
}
}
if(length<Maxlength)
Maxlength=length;
}
return strs[0].substr(0,Maxlength);
}
};
int main()
{
string arr[]={"my_date","my_daay","my_day","my_dmonth","my_dyear","my_dmouse"};
//string arr[]={};
vector<string> svec(arr,arr+6);
//vector<string> svec;
Solution s;
string ret;
ret=s.longestCommonPrefix(svec);
cout<<ret<<endl;
system("pause");
return 0;
}</span>