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题:最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。