14.最长公共前缀

2018-12-15  本文已影响0人  夜空中最亮的星_6c64

题目:

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。

示例:

示例 1:输入: ["flower","flow","flight"];输出: "fl"
示例 2:输入: ["dog","racecar","car"];输出: "";解释: 输入不存在公共前缀。

解答:

public static String longestCommonPrefix(String[] strs) {
        //字符串为空
        if (strs == null || strs.length == 0)
            return "";
        //字符串长度只有1,返回这个字符串就可以为空
        if (strs.length == 1) {
            return strs[0];
        }
        
        
        int minLength = strs[0].length();
        for (int i = 0; i < strs.length; i++) {
            //获得最短字符串长度就可以
            minLength = Math.min(minLength, strs[i].length());
        }
        //如果字符串数组中有一个字符串为空,则整体返回空
        if (minLength == 0) {
            return "";
        }
        String rString = "";
        //公共前缀的最长长度为最短字符串长度
        for (int i = 0; i < minLength; i++) {
            //遍历字符串数组
            for (int j = 1; j < strs.length; j++) {
                //只需要判断后面 每一个与第一个是否相同就可以,不需要前一个与后一个两两相比
                //不相等就返回
                if (strs[0].charAt(i)!=strs[j].charAt(i))
                    return rString;
            }
            //相等就拼接上
            rString += strs[0].charAt(i);
        }
        return rString;
    }
上一篇 下一篇

猜你喜欢

热点阅读