编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
缝补丁式编码 想问题太简单 只考虑的题目给出的两种测试用例 出一次错修改一次代码
没考虑的测试用例 [""] ["a"] ["a","a"] ["ab","abcc"] ["a","a","b"]
希望以后考虑临界值全面一点
#include<iostream>
#include <vector>
using namespace std;
class Solution
{
public:
string longestCommonPrefix(vector<string>& strs)
{ if(strs.size()==)
{
return "";
}
if(strs.size()==)
{
return strs[];
}
string ss=strs[];
int len=ss.length();
int count=;
if(len==)
{
for(int j=; j<strs.size(); j++)
{
string sts=strs[j];
int lo=sts.find(ss);
if(lo!=)
{ return "";
} }
return ss;
}
int eq=;
for(int i=; i<=len; i++)
{
string scut=ss.substr(,i);
for(int j=; j<strs.size(); j++)
{
string sts=strs[j];
if(sts==ss)
{ eq++; } int lo=sts.find(scut);
if(lo!=)
{ count=i;
return ss.substr(,count-);
} } count = i;
}
if(count=len){
return ss;
}
if(eq==strs.size())
{
return ss;
} return "";
}
};
int main()
{
vector<string> strs= {"ab","abcc"};
//vector<string> strs= {"flow","flowl"};
Solution so;
string re=so.longestCommonPrefix(strs);
cout<<re;
return ;
}
代码太繁琐仍需修改