#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string Longest_Common_Prefix(vector<string> strs)
{
if (strs.empty())
return "";
int L = strs.size();//容器的长度
//寻找到最短的str的位置
int min_L = strs[0].length();
int min_num = 0;
for (int i = 1; i < L; i++)
{
if (strs[i].length() < min_L)
{
min_L = strs[i].length();
min_num = i;
}
}
for (int i = 0; i < min_L; i++)//i 位置
{
for (int j = 0; j < L; j++)//str位置
{
if (strs[j][i] != strs[min_num][i])
{
return strs[min_num].substr(0, i);//从0开始,i个字符截断
}
}
}
return strs[min_num];
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<string> strs = {};
cout << Longest_Common_Prefix(strs);
return 0;
}
这是最笨的方法,用双层循环,复杂度为n2,当然也可使用分治的方法。