zoukankan      html  css  js  c++  java
  • [LeetCode] 14. 最长公共前缀☆

    14. 最长公共前缀

    描述

    编写一个函数来查找字符串数组中的最长公共前缀。

    如果不存在公共前缀,返回空字符串 ""。

    示例 1:

    输入: ["flower","flow","flight"]
    输出: "fl"
    示例 2:

    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    说明:

    所有输入只包含小写字母 a-z 。

    解析

    笨方法

    逐个比较每个字符串的char

    水平扫描

    以第一个字符串为基础,找出与后面字符串的以第一个字母开始的子串,依次比较。

    每一列依次比较

    如题。

    代码

    笨方法

    public static String longestCommonPrefix(String[] strs) {
            if (null == strs || strs.length <= 0) {
                return "";
            } else if (strs.length == 1) {
                return strs[0];
            }
            int index = 0;
            while (true) {
                int tempIndex = 0;
                for (int i = 0; i < strs.length - 1; i++) {
                    if (strs[i].trim().length() <= index || strs[i + 1].trim().length() <= index
                            || strs[i].charAt(index) != strs[i + 1].charAt(index)) break;
                    tempIndex = i + 1;
                }
                if (tempIndex != strs.length - 1) break;
                index++;
            }
            return index == 0 ? "" : strs[0].substring(0, index);
        }

    水平扫描

    public static String longestCommonPrefix(String[] strs) {
            if (strs.length == 0) return "";
            String prefix = strs[0];
            for (int i = 1; i < strs.length; i++)
                while (!strs[i].contains(prefix)) {
                    prefix = prefix.substring(0, prefix.length() - 1);
                    if (prefix.isEmpty()) return "";
                }
            return prefix;
        }

    每一列依次比较

    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0) return "";
        for (int i = 0; i < strs[0].length() ; i++){
            char c = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j ++) {
                if (i == strs[j].length() || strs[j].charAt(i) != c)
                    return strs[0].substring(0, i);             
            }
        }
        return strs[0];
    }
  • 相关阅读:
    Outlook 2003 最小化到系统托盘方法 [转]
    Sql Server 得到当月第一天
    禁止用户对系统数据库表的SELECT权限
    解决IE二级链接无法打开故障
    服务器安全设置全攻略
    使用TSQL脚本在SQL Server创建角色,并给角色赋予相应权限
    Redis内部阻塞式操作有哪些?
    UML和OO
    PetShop 4 详解(转载)
    Blog开通了
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/12120850.html
Copyright © 2011-2022 走看看