题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共字串,则返回空字符串。
解题思路:
【1】水平扫描法:即对字符串数组中的每一个字符进行扫描比较,先从str[1]和str[2]开始,得到最长公共前缀,然后再以此类推。
【2】采用分而治之的方法。即将字符串数组进行分组,每个组找出最长公共前缀,然后再进行比较。
【3】采用二分查找的办法。将第一个字符串进行平均划分,如果相同,则把再把不相同的字符进行二分。
class Solution{
public:
string longestCommonPrefix(vector<string>& strs){
//采用双指针的方法
if(strs.size()==0) return string();// 如果字符串数组长度为0,则返回空
else if(strs.size()==1) return strs[0]; //只有一个就返回本身
string result = ""; //初始化返回结果
//用i来指向每个字符串的相同位置的字符,j来进行遍历
for(int i=0;i<strs[0].size();i++)
{
for(int j=1;j<strs.size();j++)
{
if(strs[0][i]!=strs[j][i])
return result; //只要与下一个字符串存在不同,即返回输出。
}
result +=strs[0][i];
}
return result;
}
};