Write a function to find the longest common prefix string amongst an array of strings.
思路:在这个问题中,我们要找到所有字符串的公共前缀,最简单的方法就是从第一个字符串的第一位开始往后取,直到找到最大的公共字符串为止,那么这个条件是啥呢?第一个条件是当公共字符串的个数大于等于某个字符串的长度时,第二个条件是当字符串中出现某两个字符串的下一位不相等时。
1. abc,abd,ab
2. abc,abd,abf
代码:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
string longestCommonPrefix(vector<string>& strs){
string prefix = "";
for(int i = 0; strs.size() > 0; prefix += strs[0][i],i++){
for(int j = 0; j < strs.size(); ++j){
if(i >= strs[j].size() || (j > 0 && strs[j][i] != strs[j-1][i])){
return prefix;
}
}
}
return prefix;
}
int main(){
vector<string> a;
a.push_back("abc");
a.push_back("abd");
a.push_back("ab");
for(int i=0;i<a.size();++i)
cout<<a[i]<<endl;
cout<<"result: "<<longestCommonPrefix(a)<<endl;
}
运行时间: O(n)