Write a function to find the longest common prefix string amongst an array of strings.
其实做起来会感觉很简单,需要注意的是要考虑效率的问题,毕竟可能是很长的字符串数组,所以可以考虑选取所有字符串中最短的那个来首先进行比较,因为最长公共子串肯定不会大于其长度,这样避免了字符串之间长度差异很大造成的效率损失,然后每次比较之后最长公共子串的长度也永远不会大于最短的那个字符串,只会不变或减小,只要遍历字符串数组,挨个对比、更改最短公共字符串记录即可,code如下:
string s = "";
if(strs.empty())
return s;
int len = strs.size();
int sLen = 0;
int i=0, j=0;
for(i=0; i<len; i++)
{
if(sLen < strs[i].size())
{
s = strs[i];
sLen = strs[i].size();
}
}
for(i=0; i<len; i++)
{
for(j=0; j<sLen; j++)
{
if(s[j] != strs[i][j])
break;
}
s = s.substr(0, j);
sLen = s.size();
}
return s;