您的位置:首页 > 其它

leetcode第十四题(easy)——Longest Common Prefix

2015-05-17 10:13 393 查看
题目描述如下:

Write a function to find the longest common prefix string amongst an array of strings.

一开始搞错了题目的意思,以为是两两字符串相比较,求出最大长度前缀,结果是所有的字符串相比,求出共同的最大长度前缀。

如何来取得两个字符串的最长前缀呢?

刚开始是通过这种方法来获得,str1.startsWith(str2.substring(0,k)),通过循环k来获得。

后来网上参考了一下别人的思路,又得到了一种特别的求法:
<span style="white-space:pre">	</span>for(k=0;k<len;k++){
if(prefix.charAt(k)!=strs[i].charAt(k)){
break;
}
}
prefix=strs[i].substring(0,k);


此题思路如下:

首先得考虑特殊情况:当字符串数组strs中没字符串,即length=0时,最大前缀为“”;当字符串数组strs中有空串“”时,最大前缀也为“”。

然后是正常情况:先将数组第一个元素置为最长前缀prefix,随后与剩下的每个元素一一比较,因为2个字符串的最长公共前缀,其长度肯定不会超过最短的字符串的长度,所以取长度短的作为len。最后取得的作为prefix

public class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length==0){
return "";
}
String prefix=strs[0];
for(int i=1;i<strs.length;i++){
if(prefix==""||strs[i]==""){
return "";
}
int len = prefix.length()>strs[i].length()?strs[i].length():prefix.length();
int k;
for(k=0;k<len;k++){
if(prefix.charAt(k)!=strs[i].charAt(k)){
break;
}

}
prefix=strs[i].substring(0,k);

}
return prefix;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: