• LeetCode第14题:最长公共前缀


    生命无罪,健康万岁,我是laity。

    我曾七次鄙视自己的灵魂:

    第一次,当它本可进取时,却故作谦卑;

    第二次,当它在空虚时,用爱欲来填充;

    第三次,在困难和容易之间,它选择了容易;

    第四次,它犯了错,却借由别人也会犯错来宽慰自己;

    第五次,它自由软弱,却把它认为是生命的坚韧;

    第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;

    第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。

    LeetCode第14题:最长公共前缀

    题目

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

    输入:strs = [“flower”,“flow”,“flight”]
    输出:“fl”

    示例 2:

    输入:strs = [“dog”,“racecar”,“car”]
    输出:“”
    解释:输入不存在公共前缀。

    分析:遍历单个值竖向与其余元素的对应索引位置进行比较。都相等直接返回该元素本身;碰到不相等的返回前一位置;都不相等或为null时返回空字符串。

    解题

    时间复杂度: O(n²)

    class Solution {
        public String longestCommonPrefix(String[] strs) {
    
            if (strs.length == 0 && strs == null) {
                return "";
            }
    
            int count = strs.length;  // 数组中元素个数
            int length = strs[0].length();  // 第一个元素长度  flask
    
            for (int i = 0; i < length; i++) {
                char c = strs[0].charAt(i);  // f l a s k
                // 遍历count,第一个已取出,所以从1开始计数 flower
                for (int j = 1; j < count; j++) {
                    if (i == strs[j].length() || strs[j].charAt(i) != c) {
                        return strs[0].substring(0, i);
                    }
                }
            }
            return strs[0];
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    全代码

    /**
     * @author: Laity
     * @Project: JavaLaity
     * @Package: LeetCode.t14.longestCommonPrefix
     * @Date: 2022年11月11日 20:02
     * @Description: LeetCode第14题:最长公共前缀
     */
    public class LongestCommonPrefix {
        public static String longestCommonPrefix(String[] strs) {
    
            if (strs.length == 0 && strs == null) {
                return "";
            }
    
            int count = strs.length;  // 数组中元素个数
            int length = strs[0].length();  // 第一个元素长度  flask
            // 遍历字符
            for (int i = 0; i < length; i++) {
                char c = strs[0].charAt(i);  // f l a s k
                // 遍历count,第一个已取出,所以从1开始计数 flower
                for (int j = 1; j < count; j++) {
                    // i == strs[j].length() -> strs[0].length(); >= strs[j].length()
                    // strs[j].charAt(i) != c -> strs[0]与strs[j]前多少多少位相同,但到现在这个位置出现差异了
                    if (i == strs[j].length() || strs[j].charAt(i) != c) {
                        // 返回 上一次值的位置
                        return strs[0].substring(0, i);
                    }
                }
            }
            return strs[0];
        }
    
        public static String longestCommonPrefix2(String[] strs) {
            // 判空
            if (strs.length == 0 || strs == null) {
                return "";
            }
            // 伪代码:获取所有的可能性,strs[0] flask 拆解 -> f、fl、fla、flas、flask
            // 遍历 分析的可能性,同时遍历strs的参数内容和当初拆解的长度为一致的字符串
            // 遇到不相同的就return,遍历可能性的时候把当前可能的直接模拟最终值
            return "";
        }
    
        public static void main(String[] args) {
            String[] strs = new String[]{"flask", "flower", "flow", "django"};
            System.out.println(longestCommonPrefix(strs));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    踏实,努力,你想要的,岁月统统都会给你。我是Laity,正在前行的Laity。

  • 相关阅读:
    java毕业设计校园内推系统mybatis+源码+调试部署+系统+数据库+lw
    Java EE——线程(4)
    js中数组去重
    TCP机制之确认应答及超时重传
    mysql_config_editor的配置
    cpu 支持内存带宽与内存最大长度的关系《鸟哥的 Linux 私房菜》
    Go学习第十五章——Gin参数绑定bind与验证器
    STM32_GPIO
    verilog中半加器的代码
    angualr:CSS一个div内两个子元素的高度自适应
  • 原文地址:https://blog.csdn.net/duyun0/article/details/127817828