题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
学习记录:
想法和题解差不多,只有一个串直接返回,有两个串比较这两个,有更多的就将上次最长公共前缀和下一个比较。我写的,但是答案是将两个串的比较又写成一个函数,更加方便。结果我就写了两个的比较,还没全比,就写了这个,直接给我超出内存限制,不要这么严欸,查看结果使用substr那个截子串的操作。
string TwoPrefix(string s1,string s2){
string result="";
int len=min(s1.length(),s2.length());
int i=0;
while(i<len && s1[i]==s2[i])
{
result=result+s1[i];
}
return result;
}
正确使用截子串:s.substr(n,length)//表示从字符串n的位置开始截取length长度的字符
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string result="";
int length=strs.size();
if(length==1)
{
return strs[0];
}
result=TwoPrefix(strs[0],strs[1]);
for(int i=2;i<length;i++)
{
result=TwoPrefix(result,strs[i]);
}
return result;
}
string TwoPrefix(string s1,string s2){
string result="";
int len=min(s1.length(),s2.length());
int i=0;
while(i<len && s1[i]==s2[i])
{
i++;
}
return s1.substr(0,i);
}
};