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;
        }
    }
    
    
  • 相关阅读:
    UVA1349 Optimal Bus Route Design 最优巴士路线设计
    POJ3565 Ants 蚂蚁(NEERC 2008)
    UVA1663 Purifying Machine 净化器
    UVa11996 Jewel Magic 魔法珠宝
    NEERC2003 Jurassic Remains 侏罗纪
    UVA11895 Honorary Tickets
    gdb调试coredump(使用篇)
    使用 MegaCLI 检测磁盘状态并更换磁盘
    员工直接坦诚直来直去 真性情
    山东浪潮超越3B4000申泰RM5120-L
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/12785466.html
Copyright © 2011-2022 走看看