LC 14字符串简单第 41 / 95 题

最长公共前缀

Longest Common Prefix

字符串纵向扫描
本机进度仅保存在当前浏览器

题目描述

编写一个函数来查找字符串数组中的最长公共前缀,不存在公共前缀时返回空串。

示例:["flower", "flow", "flight"] 输出 "fl";["dog", "racecar", "car"] 输出 ""。

解题思路

  1. 纵向扫描:以第一个串为基准逐列比较,第 i 列所有字符相同则前缀延长一格,否则立即停止。
  2. 也可以横向两两归并(前两个的公共前缀再与第三个比较),复杂度相同。
  3. 任一字符串率先耗尽也应当停止,注意下标越界。

参考实现

查看参考实现Python · 建议先自行作答
def longestCommonPrefix(strs):
    # 以第一个串为基准逐列比较
    for i, ch in enumerate(strs[0]):
        for s in strs[1:]:
            if i == len(s) or s[i] != ch:
                return strs[0][:i]
    return strs[0]

复杂度与归属

时间复杂度O(n · m)
空间复杂度O(1)
所属分类字符串
题源LeetCode 14

关联教程

返回题图鉴