Longest Common Prefix 字符串数组中查找最长相同前缀字符串@LeetCode

来源:互联网 发布:剑灵男捏脸数据导入图 编辑:程序博客网 时间:2024/06/05 20:15
package Level2;import java.util.Arrays;/** * Longest Common Prefix  *  *  Write a function to find the longest common prefix string amongst an array of strings. * */public class S14 {public static void main(String[] args) {String[] strs = {"bc", "bcaddf", "bca"};System.out.println("->" + longestCommonPrefix(strs));}public static String longestCommonPrefix(String[] strs) {if(strs.length == 0){return "";}int minLen = strs[0].length();int minIndex = 0;// 先找出最小长度的stringfor(int i=0; i<strs.length; i++){if(strs[i].length() < minLen){minLen = strs[i].length();minIndex = i;}}String s = strs[minIndex];int endIndex = s.length();int i;// 暴力法查找while(endIndex > 0){String sub = s.substring(0, endIndex);for(i=0; i<strs.length; i++){if(!strs[i].substring(0, endIndex).equals(sub)){break;}}if(i == strs.length){break;}else{endIndex--;}}return s.substring(0, endIndex);}}




Rewrite:

public String longestCommonPrefix(String[] strs) {        if(strs.length == 0){            return "";        }        String first = strs[0];        int i, j;        boolean match = true;        for(i=0; i<first.length() && match; i++){            for(j=0; j<strs.length; j++){                if(i>=strs[j].length() || strs[j].charAt(i)!=first.charAt(i)){                    match = false;                    break;                }            }            if(!match){                return first.substring(0,i);            }        }                return first.substring(0,i);    }



public class Solution {    public String longestCommonPrefix(String[] strs) {        int len = strs.length;        if(len == 0) {            return "";        }        int minLen = strs[0].length();        String minStr = strs[0];        for(int i=0; i<len; i++) {            if(strs[i].length() < minLen) {                minLen = strs[i].length();                minStr = strs[i];            }        }                for(int i=0; i<minLen; i++) {            char c = minStr.charAt(i);            for(int j=0; j<len; j++) {                if(strs[j].charAt(i) != c) {                    return minStr.substring(0, i);                }            }        }        return minStr;    }}




原创粉丝点击