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。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itLaity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值