您的位置:首页 > 其它

leetcode之路014 Longest Common Prefix

2015-07-29 23:35 134 查看
题目大意:找到一个字符串数组的最大公共前缀字符。挺简单的一个题,求解如下。

思路:对第一个第二个字符串,找到最长前缀为te,然后找te和第三个的最长前缀,依次循环到最后即可。循环中加入判断te是否为空,若为空直接返回空。

提交ac的代码如下,运行时间8ms:

class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()==0)
return "";
string te1=strs[0];
for(int i=1;i<strs.size();++i)
{
int j=0;
while(te1[j]==strs[i][j]&&j<te1.length()&&j<strs[i].length())
++j;

te1=te1.substr(0,j);
if(te1.size()==0)
return "";
}
return te1;
}
};


不过讨论区还有一种方式,从strs[0][0] to strs[i][0]进行比对,即垂直方向进行比对,对这种两种方式,垂直方向比较更快一些。原因是,假设前面所有字符串都相同为“abcdefgh”,最后一个不同为“cdfrg”,此时水平方式需要比较到最后才行。因此垂直方式更快一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: