编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
这道题目虽然标注着简单,但是我也只是会暴力求解,而且一般的暴力求解在网站上提交的时候总是会显示缓冲区溢出的问题,如果要解决这个问题就要减少空间开销,那么整体的思路就是取第一个字符串,不断地以他的第i个字符来判断之后的每一个字符串的情况,如果遇到不一样的或者是遍历完成之后就终止。下面给出代码:
string longestCommonPrefix(vector<string>& strs) {
int size=strs.size();
if(size==0)
{
return "";
}
int min_str_len=strs[0].size();
string temp;
char tstr;
for(size_t i=1;i<size;i++)
{
min_str_len=strs[0].size()<min_str_len?strs[0].size():min_str_len;
}
for (size_t j=0;j<min_str_len;j++)
{
tstr=strs[0][j];
for (size_t i=1;i<size;i++)
{
if (tstr!=strs[i][j])
{
return temp;
}
}
temp+=tstr;
}
return temp;
}