zoukankan      html  css  js  c++  java
  • 最长公共前缀

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

    思路:

    1. 先利用Arrays.sort(strs)为数组排序;
    2. 再将数组第一个元素和最后一个元素的字符从前往后对比。
    package algorithm;
    
    import java.util.Arrays;
    
    /**
     * 最长公共前缀
     * Leetcode: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
     * <p>
     * 示例 1:
     * <p>
     * 输入: ["flower","flow","flight"]
     * 输出: "fl"
     * Copy to clipboardErrorCopied
     * 示例 2:
     * <p>
     * 输入: ["dog","racecar","car"]
     * 输出: ""
     * 解释: 输入不存在公共前缀。
     */
    public class MaxCommonPrefix {
        public static void main(String[] args) {
            String[] strs = {"dog", "door", "didi"};
            String maxCommonPrefix = getMaxCommonPrefix(strs);
            System.out.println(maxCommonPrefix);
        }
    
        /**
         * 获取最长公共前缀
         *
         * @param strs
         */
        private static String getMaxCommonPrefix(String[] strs) {
            if (checkStrs(strs)) {
                int len = strs.length;
                StringBuilder strbuilder = new StringBuilder();
                Arrays.sort(strs);
                int m = strs[0].length();
                int n = strs[len - 1].length();
                for (int i = 0; i < len; i++) {
                    if (strs[0].charAt(i) == strs[len - 1].charAt(i)) {
                        strbuilder.append(strs[0].charAt(i));
                    } else {
                        break;
                    }
                }
                return strbuilder.toString();
            } else {
                return "";
            }
        }
    
        /**
         * 检查字符串数组是否合法
         *
         * @param strs 原始字符串
         * @return true 合法,false 不合法
         */
        private static boolean checkStrs(String[] strs) {
            boolean flag = false;
            if (strs != null) {
                for (int i = 0; i < strs.length; i++) {
                    if (strs[i] != null && strs[i].length() != 0) {
                        flag = true;
                    } else {
                        flag = false;
                    }
                }
            }
            return flag;
        }
    }
    
    
  • 相关阅读:
    pytorch和tensorflow
    创建用户
    linux 软件安装
    python 常见错误集锦
    Anaconda常规用法
    两个电脑之间文件快穿-基于用一个局域网和python的使用
    python-pip使用整理
    时间序列 -prophet
    SQL习题集锦
    取色器RGB转换htlm
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/12785466.html
Copyright © 2011-2022 走看看