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

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

作者: 辉_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