首页 > 其他 > 详细

LeetCode -- Longest Common Prefix

时间:2015-11-06 12:30:28      阅读:238      评论:0      收藏:0      [点我收藏+]

Question:

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

 

Analysis:

写一个函数找到一个字符串数组的最长公共前缀。

思路:依次两两比较,用短的前缀更新比较长的前缀,一直到数组的末尾。

 

Answer:

public class Solution {
    public static String longestCommonPrefix(String[] strs) {
        if(strs.length == 0)
                return "";
        if(strs.length == 1)
                return strs[0];
        char[] res = strs[0].toCharArray();
        for(int i=1; i<strs.length; i++) {
                char[] ch1 = strs[i-1].toCharArray();
                char[] ch2 = strs[i].toCharArray();
                char[] ch12 = getCommon(ch1, ch2);
                //System.out.println(ch12[0]);
                if(ch12.length == 1 && ch12[0] == ‘\0‘) 
                    return "";
                if(ch12.length <= res.length) {
                    res = ch12;
                }
        }
        return new String(res);
    }
    public static char[] getCommon(char[] ch1, char[] ch2) {
            int shorter = ch1.length <= ch2.length ? ch1.length : ch2.length;
            char[] prefix = new char[shorter];
        int common = 0;
        for(int j=0; j<shorter; j++) {
            if(ch1[j] == ch2[j]) {
                common++;
                prefix[j] = ch1[j];
            }
            else 
                break;
        }
        char[] prefix1 = new char[common];
        for(int i=0; i<common; i++) 
            prefix1[i] = prefix[i];
        return prefix1;
    }
}

 

LeetCode -- Longest Common Prefix

原文:http://www.cnblogs.com/little-YTMM/p/4941978.html

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