码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode: 14. Longest Common Prefix

时间:2016-08-10 20:49:33      阅读: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!