题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
提示:
0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
代码示例
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int gong;//公共字段的字数
vector<string>::iterator it=strs.begin();
string a=*it;it++;
if(a=="")return "";//特殊情况,当容器为空时直接输出
if(it==strs.end())return a;//特殊情况,当容器中只有一个字符串时直接输出
string b=*it;//初始化a,b为容器中的前两个字符串
int len=min(a.length(),b.length());//取两字符串最小长度
while(1)
{
int t=comgong(len,a,b);
len=min(t,len);//计算公共最小长度
it++;
if(it==strs.end())break;
a=b;b=*it;//a,b向后更新
}
string sans;//最终字符串结果
for(int i=0;i<len;i++)
{
sans+=a[i];
}
return sans;
}
int comgong(int len,string a,string b)
{
int ans=0;
for(int i=0;i<len;i++)
{
if(a[i]==b[i])ans++;//相同继续,不同退出
else break;
}
return ans;
}
};