Leetcode Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
解题思路:
先对整个String数组预处理一下,求一个最小长度(最长前缀肯定不能大于最小长度)。
然后以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,有不同字符串返回当前记录的字符串就行。
Java code:
public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) return ""; int min = Integer.MAX_VALUE; for(int i=0; i<strs.length;i++) { if(min > strs[i].length()) { min = strs[i].length(); } } StringBuilder res = new StringBuilder(); int len = min; int index = 0; 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(); }
空间复杂度更小的代码如下(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]; }
Reference:
1. http://www.cnblogs.com/springfor/p/3872316.html