Python每日一练---第十八天:最长公共前缀

前言📢📢

Python每日一练来啦,本文已收录于:《Python每日一练》专栏

此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,持续更新中,欢迎免费订阅!!!
*

1. 问题描述

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

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

示例 1:

输入: strs = ["flower","flow","flight"]输出:"fl"

示例 2:

输入: strs = ["dog","racecar","car"]输出: ""**解释:**输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200

  • 0 <= strs[i].length <= 200

  • strs[i] 如果非空,则仅由小写英文字母组成

2. 问题分析

公共前缀 :所有字符串都从开头开始相同的部分

  • 必须是从第一个字符开始的连续相同字符

  • 一旦出现不匹配,后面的部分就不再考虑

3. 算法思路

  • 公共前缀的长度不会超过最短字符串的长度

  • 公共前缀是所有字符串的公共部分,不是某两个字符串的

  • 一旦某个位置字符不匹配,搜索就可以终止

4. 代码实现

python 复制代码
from typing import List


class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""

        # 以第一个字符串作为初始前缀
        prefix = strs[0]

        # 与后续每个字符串比较
        for i in range(1, len(strs)):
            # 不断缩短前缀,直到找到当前字符串的前缀
            while strs[i].find(prefix) != 0:
                prefix = prefix[:-1]
                if not prefix:
                    return ""

        return prefix

if __name__ == '__main__':
    print(Solution().longestCommonPrefix(["flower","flow","flight"]))
相关推荐
A__tao4 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢4 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
lly2024064 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨4 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9994 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏4944 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
功德+n4 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨5 小时前
python扫码登录dy
开发语言·python
我是唐青枫5 小时前
C#.NET gRPC 深入解析:Proto 定义、流式调用与服务间通信取舍
开发语言·c#·.net
JJay.5 小时前
Kotlin 高阶函数学习指南
android·开发语言·kotlin