每日两道算法题 - 最大公共前缀(高频)

2021-12-22  本文已影响0人  辉_ace

问题

给定一个字符数组,获取该数组中多个字符的最大公共前缀,如果不存在则返回空串
输入:["flower","flow","flight"]
输出:"fl"

思路

1)假定数组中第一个字符为最大公共前缀,并和数组中其他字符逐一进行比较,获取公共部分
2)判断第二个字符中是否存在第一个字符,如果不存在,则对第一个字符截取一位并继续比较, 如果存在,则继续对后续其他字符进行逐一比较。

实现

public class LongestCommonPrefix {

    public static void main(String[] args) {

        String[] strings = new String[]{"flower","flow","flight"};
        String result = longestCommonPrefix(strings);
        System.out.println(result);
    }

    //默认第一个字符是公共前缀,逐一的和后面的字符进行比较
    private static String longestCommonPrefix(String[] strs) {
        //获取第一个字符
        String first = strs[0];
        //循环比较
        int index = 1;
        while (index<strs.length){
            //不断截取
            while (strs[index].indexOf(first) != 0){
                //第一个字符缩短一位
                first = first.substring(0,first.length()-1);
            }
            //满足条件继续向后比较
            index++;
        }
        return first;
    }
}
image.png
上一篇下一篇

猜你喜欢

热点阅读