优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python第14题:最长公共前缀【leetcode】

nanyue 2024-11-20 19:36:11 技术文章 3 ℃

1、编程试题:

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

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

示例 1:

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

输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]

输出:""

解释:输入不存在公共前缀。

2、代码实现:

可编辑代码如下:

#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
#
# Copyright (C) 2024 , Inc. All Rights Reserved
#
# @Time      : 2024/3/3 16:53
# @Author    : fangel
# @FileName  : [leetcode] 14. 最长公共前缀.py
# @Software  : PyCharm

class Solution:
    def longestCommonPrefix(self, strs: list[str]) -> str:
        # 步骤1:如果strs为单个元素,直接返回
        if len(strs) == 1 or len(strs) == 0:
            return "".join(strs)
        # 步骤2:先求出strs里最短的元素长度
        lenList = []
        for str in strs:
            lenList.append(len(str))
        minLen = min(lenList)
        # 步骤3:进行循环判断求公共子串
        resList = []
        for i in range(0,minLen):
            j = 0
            while j < len(strs)-1:
                a = strs[j][i]
                # 不相等的话直接就返回已有的resList列表了
                if strs[j+1][i] != a:
                    return "".join(resList)
                else:
                    j += 1
            resList.append(a)
        return "".join(resList)

# 获取输入, 类型为字符串
input = list(map(str,input().split(",")))
# 调用函数
print(Solution().longestCommonPrefix(input))

3、代码分析:

执行用时分布52ms,击败9.39%使用 Python3 的用户

消耗内存分布16.44MB,击败47.13%使用 Python3 的用户

本例先判断strs的特殊场景,然后求出strs里最短的元素长度,再用for循环求公共字符串即可

4、运行结果:

输入:gbhu,ghui,g123h,g789,g78ui890

输出:g

Tags:

最近发表
标签列表