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

 

posted @ 2015-09-10 13:26  茜茜的技术空间  阅读(147)  评论(0编辑  收藏  举报