美文网首页
每日两道算法题 - 最大公共前缀(高频)

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

作者: 辉_ace | 来源:发表于2021-12-22 00:00 被阅读0次

问题

给定一个字符数组,获取该数组中多个字符的最大公共前缀,如果不存在则返回空串
输入:["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

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/rnwfqrtx.html