Leetcode 14 Longest Common Prefix

来源:互联网 发布:centos安装sftp 编辑:程序博客网 时间:2024/06/17 00:18

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

方法一:LCP(S1Sn)=LCP(LCP(LCP(S1,S2),S3),Sn)

第一种

public class Solution {    public String longestCommonPrefix(String[] strs) {        if (strs == null)            return null;        else if(strs.length == 0){            return "";        }        else{             StringBuilder str = new StringBuilder(strs[0]);             for (int i = 1; i < strs.length; i++){             str = new StringBuilder(prefix(str.toString(),strs[i]));             }          return str.toString();            }    }    public String prefix(String str1, String str2){       StringBuilder str = new StringBuilder();       for (int i = 0; i < str1.length() && i < str2.length(); i++){           if(str1.charAt(i) == str2.charAt(i))               str.append(str1.charAt(i));           else             break;       }           return str.toString();     }}
第二种

public class Solution{public String longestCommonPrefix(String[] strs) {    if (strs.length == 0) return "";    String prefix = strs[0];    for (int i = 1; i < strs.length; i++)        while (strs[i].indexOf(prefix) != 0) {            prefix = prefix.substring(0, prefix.length() - 1);            if (prefix.isEmpty()) return "";        }            return prefix; }}
方法二:分治法

public class Solution{public String longestCommonPrefix(String[] strs) {    if (strs == null || strs.length == 0) return "";            return longestCommonPrefix(strs, 0 , strs.length - 1);}private String longestCommonPrefix(String[] strs, int l, int r) {    if (l == r) {        return strs[l];    }    else {        int mid = (l + r)/2;        String lcpLeft =   longestCommonPrefix(strs, l , mid);        String lcpRight =  longestCommonPrefix(strs, mid + 1,r);        return commonPrefix(lcpLeft, lcpRight);   }}String commonPrefix(String left,String right) {    int min = Math.min(left.length(), right.length());           for (int i = 0; i < min; i++) {        if ( left.charAt(i) != right.charAt(i) )            return left.substring(0, i);    }    return left.substring(0, min); }}


1 0
原创粉丝点击