LongestCommonPrefix 【最长公共前缀】

发布时间:2024年01月11日

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

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!

文章来源:https://blog.csdn.net/JiangMeiXue/article/details/135511664
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。