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;
        }
    }
    
    
  • 相关阅读:
    微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
    微信公众号支付开发当前URL未注册解决办法
    程序员头像
    jQuery简单实现iframe的高度根据页面内容自适应的方法(转)
    MySQL大表优化方案 Mysql的row_format(fixed与dynamic)
    PHP 测试杂项
    【转】MySQL的学习--触发器
    MYSQL PROCEDURE 测试用例
    CSS好看的按钮
    表格可在线编辑效果
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/12785466.html
Copyright © 2011-2022 走看看