编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
char* longestCommonPrefix(char** strs, int strsSize)
{
int n=strsSize;
if(0==n)
{
return "";
}
int length=strlen(strs[0])+1;
char* tmp=(char*)malloc(sizeof(char)*length);
char* res=(char*)malloc(sizeof(char)*length);
int k=0;
strcpy(tmp,strs[0]);
for(int i=1;i<n;i++)
{
int m=strlen(strs[i])<strlen(tmp)?strlen(strs[i]):strlen(tmp);
for(int j=0;j<m;j++)
{
if(tmp[j]==strs[i][j])
{
res[k]=tmp[j];
k++;
}
else
{
break;
}
}
if(0==strlen(res))
{
return "";
}
else
{
res[k]='\0';
strcpy(tmp,res);
k=0;
}
}
return tmp;
}
C++
class Solution {
public:
string longestCommonPrefix(vector<string>& strs)
{
int n=strs.size();
if(0==n)
{
return "";
}
string tmp=strs[0];
string res="";
for(int i=1;i<n;i++)
{
int len=min(tmp.length(),strs[i].length());
for(int j=0;j<len;j++)
{
if(tmp[j]==strs[i][j])
{
res+=tmp[j];
}
else
{
break;
}
}
if(""==res)
{
return res;
}
else
{
tmp=res;
res="";
}
}
return tmp;
}
};
python
class Solution:
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
n=len(strs)
if 0==n:
return ""
tmp=strs[0]
res=""
for i in range(1,n):
m=min(len(strs[i]),len(tmp))
for j in range(m):
if tmp[j]==strs[i][j]:
res+=tmp[j]
else:
break
if ""==res:
return res
else:
tmp=res
res=""
return tmp