1.横向遍历
class Solution {
public:
/**
*
* @param strs string字符串vector
* @return string字符串
*/
static string getprefix(string s1, string s2) {
int length = min(s1.size(), s2.size());
int index = 0;
while (index < length && s1[index] == s2[index]) {
index++;
}
return s1.substr(0, index);
}
string longestCommonPrefix(vector<string>& strs) {
// write code here
if(strs.empty() || strs[0]=="")
return "";
if(strs.size()==1){
return strs[0];
}
//使用横向扫描,两两遍历整个字符串数组
string prefix=getprefix(strs[0],strs[1]); //初始化
for(int i=2;i<strs.size();i++){
prefix=getprefix(prefix.c_str(),strs[i].c_str());
}
return prefix;
}
};
2.
1.字符串排序,找出最长和最短字符串
2.将两个比较得到最长公共前缀
string longestCommonPrefix(vector<string>& strs)
{
// write code here
//边界条件判断
if (strs.size() == 0)
return "";
if(strs.size()==1)
return strs[0];
//对字符串排序 找出最大和最小字符串
sort(strs.begin(),strs.end());
string str=*strs.begin();
string strmax=*strs.rbegin();
string result="";
//用最小字符串和最大字符串挨个字符比对 找出公共子串
for(int i=0;str[i]==strmax[i];i++){
result+=str[i];
}
return result;
}