首页 > 其他 > 详细

LeetCode: 14. Longest Common Prefix

时间:2016-08-10 20:46:23      阅读:142      评论:0      收藏:0      [点我收藏+]

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

 

大意就是,写一个函数可以找到一个数组字符串中的最长前缀。

 

分析: 最长前缀的最大值为数组字符串中长度最短的字符,由最短字符串由后向前递减可以得到最长前缀。

 

算法构架:先遍历求得最短字符串和长度n,然后再次遍历数组,用最短字符串依次对比当前字符串前n个字符是否相等,不相等则n--,直到找到最短字符串和当前字符串前n个字符相等,继续遍历。

注意:因为是求共有的前缀,所以前缀必定满足所有字符串,因此只用单次遍历数组即可以求得答案。

 

public class Solution 
{
    public String longestCommonPrefix(String[] strs) 
    {
        if (strs == null || strs.length == 0)
        {
            return "";
        }
        
        int length = strs[0].length();
        String res = strs[0];
        
        for (int i = 1; i < strs.length; i++)
        {
            if (strs[i].length() < length)
            {
                length = strs[i].length();
                res = strs[i];
            }
        }
        
        for (String s : strs)
        {
            while (!res.equals(s.substring(0,length)))
            {
                length--;
                res = res.substring(0,length);
            }
        }
        
        return res;
    }
}

复杂度为n

LeetCode: 14. Longest Common Prefix

原文:http://www.cnblogs.com/snakech/p/5758020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!