Loading [MathJax]/jax/output/CommonHTML/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >高频「字符串」面试题:最长公共前缀 ...

高频「字符串」面试题:最长公共前缀 ...

作者头像
宫水三叶的刷题日记
发布于 2021-02-26 07:56:26
发布于 2021-02-26 07:56:26
35500
代码可运行
举报
运行总次数:0
代码可运行

题目描述

这是 LeetCode 上的「14. 最长公共前缀」,难度为 Easy

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

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

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 0 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

朴素解法

对每个字符串进行逐位检查,直到不满足公共前缀:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public String longestCommonPrefix(String[] ss) {
        String ans = "";
        if (ss.length == 0) return ans;
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            String s = ss[0];
            if (i >= s.length()) return ans;
            char c = ss[0].charAt(i);
            for (String item : ss) {
                if (i >= item.length() || item.charAt(i) != c) return ans;
            }
            ans += String.valueOf(c);
        }
        return ans;
    }
}

说明:判断条件不一定要写成 i < Integer.MAX_VALUE,题目给出了范围是 200 以内,写成 i <= 200 也可以。不影响执行效率。

  • 时间复杂度:对于 n 个字符串,都需要遍历到公共前缀长度 m。复杂度为
  • 空间复杂度:需要存储公共前缀作为答案返回。复杂度为

最后

这是我们「刷穿 LeetCode」系列文章的第 No.14 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先将所有不带锁的题目刷完。

在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode。

「在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。」

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宫水三叶的刷题日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【刷穿 LeetCode】14. 最长公共前缀(简单)
说明:判断条件不一定要写成 i < Integer.MAX_VALUE,题目给出了范围是 200 以内,写成 i <= 200 也可以。不影响执行效率。
宫水三叶的刷题日记
2021/02/20
2340
014. 最长公共前缀 | Leetcode题解
解题思路,很容易想到的是我们将第一个字符串A和第二个字符串B求公共前缀,然后在和第三个字符串C求公共前缀,最终得到最长公共前缀。解题重点是求两个字符串求公共前缀。比较常见的想法是如果这两个字符串的第一个字符相同则记录第一个字符,第二个相同则增加第二个,直到出现不同的字符串。但是在这个思路上有一个难点,我们在和C串求前缀的时候,会重新从第一个字符开始记录,增加不必要的计算。第二个思路就是将A串作为前缀,如果与B串前面字符不同,则去掉最后一个字符重新和B串匹配,直到字符完全匹配B串,在python中,s = s[:-1]很容易去掉最后一个字符。实现如下:
苏南
2020/12/16
4930
014. 最长公共前缀 | Leetcode题解
LeetCode 算法 | 最长公共前缀?
首先,我们将描述一种查找一组字符串的最长公共前缀 LCP(S_1 \ldots S_n)LCP(S1…Sn) 的简单方法。 我们将会用到这样的结论:
技术从心
2019/08/06
8860
LeetCode-14. 最长公共前缀(java)
        最容易想到的就是使用暴力来解决这道题。题目不是要找出所有元素的​​最长公共前缀​​么,那说明得每个元素是否存在这样的一个交集。
bug菌
2023/05/27
3990
LeetCode-14. 最长公共前缀(java)
画解算法:14. 最长公共前缀
https://leetcode-cn.com/problems/longest-common-prefix/
灵魂画师牧码
2019/06/27
4220
画解算法:14. 最长公共前缀
【力扣刷题】14. 最长公共前缀
当字符串数组长度为 0 时则公共前缀为空,直接返回 令最长公共前缀 ans 的值为第一个字符串,进行初始化 遍历后面的字符串,依次将其与 ans 进行比较,两两找出公共前缀,最终结果即为最长公共前缀 如果查找过程中出现了 ans 为空的情况,则公共前缀不存在直接返回 时间复杂度:O(s)O(s),s 为所有字符串的长度之和
jayjay
2022/11/02
3000
14. 最长公共前缀
这道题目我的思路很简单,就是求字符串切片中最短的那个字符串的长度n,然后从1开始一直到n,截取前面几个字符判断是否一致,如若一致,即继续截取下一个,直到求出最长的公共前缀。
Regan Yue
2023/02/13
3680
14. 最长公共前缀
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
该算法的时间复杂度为O(n*m),其中n是字符串数组的长度,m是最长公共前缀的长度。
人不走空
2024/02/22
2480
LeetCode-14 最长公共前缀
今天我们学习第14题最长公共前缀,这是一道简单题。像这样字符串的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题。下面我们看看这道题的题目描述。
用户3470542
2019/06/26
4700
LeetCode-14 最长公共前缀
最长公共前缀
JavaScript实现Leetcode 14. 最长公共前缀 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。说明: 所有输入只包含小写字母 a-z 解析思路 字符串数组长度为0时,公共前缀为空,直接返回 初始化公共前缀 commonPrefix 为 第一
木子星兮
2020/07/16
6040
​LeetCode刷题实战14: 最长公共前缀
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2021/01/16
3520
​LeetCode刷题实战14: 最长公共前缀
leetcode刷题(82)——14. 最长公共前缀
输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2:
老马的编程之旅
2022/06/22
2070
最长公共前缀
用户3519280
2023/07/08
1550
LeetCode 进阶之路 - 最长公共前缀
题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-common-prefix 著
Li_XiaoJin
2022/06/10
1450
LeetCode 进阶之路 - 最长公共前缀
力扣 (LeetCode)-14. 最长公共前缀|刷题打卡
每天学习编程,让你离梦想更新一步,感谢不负每一份热爱编程的程序员,不论知识点多么奇葩,和我一起,让那一颗四处流荡的心定下来,一直走下去,加油,2021加油!欢迎关注加我vx:xiaoda0423,欢迎点赞、收藏和评论
达达前端
2021/03/22
1.2K0
力扣 (LeetCode)-14. 最长公共前缀|刷题打卡
leecode刷题(19)-- 最长公共前缀
这道题我用的是暴力破解的方法,遍历字符串数组,依次比较每个字符,如果都相等,则长度加一再比较,如果不相等,则返回之前的字符。
希希里之海
2019/03/06
4510
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。
WindRunnerMax
2020/08/27
4630
【字符串】最长公共前缀 && 最长回文子串
​ 这道题模拟的思路有两种,第一种就是每次比较每个字符串同一位置的字符,判断是否相等,如果不相等则返回前面匹配的位置,可以使用 substr() 函数直接实现这块!
利刃大大
2025/02/27
1410
LeetCode - 最长公共前缀
LeetCode第14题,难度简单。将近两年以前做的题目了,回头看说不定会有新的做题思路。
晓痴
2019/08/22
5740
LeetCode - 最长公共前缀
leetcode - 最长公共前缀
链接:https://leetcode-cn.com/problems/longest-common-prefix
江涛学编程
2021/01/28
4070
相关推荐
【刷穿 LeetCode】14. 最长公共前缀(简单)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验