Longest Common Prefix leetcode java
2017-08-24 16:01
323 查看
题目:
Write a function to find the longest common prefix string amongst an array of strings.
题解:
解题思路是,先对整个String数组预处理一下,求一个最小长度(最长前缀肯定不能大于最小长度)。
然后以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,有不同字符串返回当前记录的字符串就行。
我的代码如下,不是那么简洁好看,下面有个整理的更好一些:
更简洁的代码:
Reference:http://blog.csdn.net/linhuanmars/article/details/21145733
-------------------
更新
空间复杂度更小的代码如下(from discussion):
更新:来自LeetCode大神的解答
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0) return "";
String pre = strs[0];
int i = 1;
while(i < strs.length){
while(strs[i].indexOf(pre) != 0)
pre = pre.substring(0,pre.length()-1);
i++;
}
return pre;
}
Write a function to find the longest common prefix string amongst an array of strings.
题解:
解题思路是,先对整个String数组预处理一下,求一个最小长度(最长前缀肯定不能大于最小长度)。
然后以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,有不同字符串返回当前记录的字符串就行。
我的代码如下,不是那么简洁好看,下面有个整理的更好一些:
private static int MinLength(String[] strs) { int temp = Integer.MAX_VALUE; for(int i=0; i<strs.length;i++){ if(temp>strs[i].length()) temp = strs[i].length(); } return temp; } public static String longestCommonPrefix(String[] strs) { if(strs.length==0){ return ""; } int j = 0; boolean flag = false; int length = MinLength(strs); while(j<length){ int i = 1; while(i<strs.length){ int c = strs[0].charAt(j); if(strs[i].charAt(j)==c){ i++; }else{ flag = true; break; } } if(flag) break; j++; } return strs[0].substring(0, j); }
更简洁的代码:
private int minlen(String[] strs) { int min = Integer.MAX_VALUE; for(int i=0; i<strs.length;i++) min = Math.min(min,strs[i].length()); return min; } public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) return ""; StringBuilder res = new StringBuilder(); int index = 0; int len = minlen(strs); while (index < len){ for (int i=1; i<strs.length;i++){ if (strs[i].charAt(index) != strs[0].charAt(index)) return res.toString(); } res.append(strs[0].charAt(index)); index++; } return res.toString(); }
Reference:http://blog.csdn.net/linhuanmars/article/details/21145733
-------------------
更新
空间复杂度更小的代码如下(from discussion):
public String longestCommonPrefix(String[] strs) { if(strs.length == 0||strs == null) return ""; for(int i = 0; i<strs[0].length(); i++){ char x = strs[0].charAt(i); for(int j = 1; j<strs.length; j++){ if(strs[j].length() == i || strs[j].charAt(i) != x) return strs[0].substring(0,i); } } return strs[0]; }
更新:来自LeetCode大神的解答
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0) return "";
String pre = strs[0];
int i = 1;
while(i < strs.length){
while(strs[i].indexOf(pre) != 0)
pre = pre.substring(0,pre.length()-1);
i++;
}
return pre;
}
相关文章推荐
- Longest Common Prefix Leetcode Python Java
- [LeetCode][Java] Longest Common Prefix
- 【leetcode-14】Longest Common Prefix(java)
- (JAVA)LeetCode-14. Longest Common Prefix
- [LeetCode][14]Longest Common Prefix解析 两种算法和底层源码的深入对比-Java实现
- LeetCode : Longest Common Prefix [java]
- leetcode Longest Common Prefix(Java)
- Leetcode Java求解Longest Common Prefix
- LeetCode 14 : Longest Common Prefix (Java)
- Java [leetcode 14] Longest Common Prefix
- LeetCode 14 : Longest Common Prefix (Java)
- 【LeetCode-面试算法经典-Java实现】【014-Longest Common Prefix(最长公共前缀)】
- LeetCode 14 — Longest Common Prefix (Java)
- LeetCode 14 Longest Common Prefix (C,C++,Java,Python)
- [Java]Leetcode14 Longest Common Prefix
- leetcode:Longest Common Prefix 【Java】
- 【LeetCode解答八】Longest Common Prefix问题Java解答
- 【JAVA、C++】LeetCode 014 Longest Common Prefix
- Longest Common Prefix leetcode java
- [LeetCode] 014. Longest Common Prefix (Easy) (C++/Java/Python)