LeetCode第14题:最长公共前缀

Posted itLaity

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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];
    

全代码

/**
 * @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));
    

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

以上是关于LeetCode第14题:最长公共前缀的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。

Leetcode练习(Python):字符串类:第14题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。

python(leetcode)-14最长公共前缀

LeetCode第[14]题(Java): Longest Common Prefix

Leetcode 14 最长公共前缀

LeetCode第19天 - 14. 最长公共前缀