LongestCommonPrefix 【最长公共前缀】

排序,找到长度最短的和第二短的,求解出这两个的最长公共前缀即可。

public String longestCommonPrefix(String[] strs) {

        Arrays.sort(strs,new Comparator<String>(){
            @Override
            public int compare(String o1, String o2) {
                return Integer.compare(o1.length(), o2.length());
            }
        });
        String s1 = strs[0];
        String s2 = strs[1];
        int len = 0;
        for(int i=0,j=0;i<s1.length();i++,j++){
            if(s1.charAt(i) != s2.charAt(j)){
                return "";
            }else{
                len++;
            }
        }

        return s1.substring(0,len);
    }

在这里插入图片描述
看到上面就知道,我上面一开始说的思路是错误的。

换个思路:
在排序的基础上,取出该字符串的每一位字符,和每个字符串的每一位compare

public String longestCommonPrefix(String[] strs) {
        Arrays.sort(strs,new Comparator<String>(){
            @Override
            public int compare(String o1, String o2) {
                return Integer.compare(o1.length(), o2.length());
            }
        });
        String s1 = strs[0];
        int len = 0,flag=0;
        for(int i=0;i<s1.length();i++){
            for(int j=1;j<strs.length;j++){
                if(strs[j].charAt(i) == s1.charAt(i)){

                }else{
                    flag =1;
                    break;
                }
            }
            if(flag == 1){
                break;
            }else{
                len++;
            }
        }
        return s1.substring(0,len);
    }

over!

你可能感兴趣的:(LeetCode,刷题,java,算法,数据结构)