Description:
Write a function to find the longest common prefix string amongst an array of strings.
分析:
先将第一个字符串与第二个字符串比较,找出公共部分,再与第三个字符串比较,依次类推。。。
代码:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string LongestCommonPrefix(std::vector<string> &v)
{
if(!v.empty()) //判断容器是否为空
{
vector<string>::iterator it = v.begin();
string str1 = *it;
while (++it != v.end()) {
string str2 = *it;
size_t MinLen = min(str1.size(),str2.size());
for (size_t i = 0; i < MinLen; i++) {
if (str1[i] != str2[i]) {
str1 = str1.substr(0,i);
break;
}
}
}
return str1;
}
return "0";
}
int main(int argc, char const *argv[]) {
vector<string> s = {"argcabcd","argcefgh","argcadcb","arg3547"};
vector<string> s2 = {"123str","12the","1arg","abc"};
vector<string> s3 = {};
std::cout << LongestCommonPrefix(s) << std::endl;
std::cout << LongestCommonPrefix(s2) << std::endl;
std::cout << LongestCommonPrefix(s3) << std::endl;
return 0;
}
测试: