LeetCode之最长前缀

127 阅读1分钟

题目:编写一个函数来查找字符串数组中的最长公共前缀

输入: strs = ["flower","flow","flight"]
输出: "fl"
public static String getMaxPre(String[] str) {
    //第一步找出最短字符串,前缀既然公共的,那么最长的前缀一定只能是最短的字符串
    String strOfMinLength = Arrays.stream(str).min(new Comparator<String>() {
        @Override
        public int compare(String str1, String str2) {
            return str1.length() - str2.length() ==0 ? str1.compareTo(str2):str1.length() - str2.length();
        }
    }).get();
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < strOfMinLength.length(); i++) {
    //当前index下的字符是否是数组中所有字符串对应的index下的字符
        char charAt = strOfMinLength.charAt(i);
        Boolean flag = false;
        for (String s : str) {
            flag = charAt==s.charAt(i);
        }
        //r如果当前index的字符也是每个字符串对应index下的字符,则为公共字符
        if(flag){
            builder.append(charAt);
        }
    }
    return builder.toString();
}