【Python】LeetCode刷题之最长公前缀,思路1(纵向扫描)比较单词同一位置的字符是否相同

简介: 思路1(纵向扫描)比较单词同一位置的字符是否相同

最长公前缀

题目

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

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

示例 1:

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

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

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-common-prefix

解题思路

纵向扫描
在这里插入图片描述

通过循环,判断列表里这几个字符串同一个位置的字符是否相同,如果相同作为前缀组成部分,不相同就结束循环并输出前面相同的部分。

判断相同可以用集合的互异性,如果这几个字符相同集合就一个字符,长度为1。

返回元组

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象

strs = ["flower","flow","flight"]
s = ""
for i in zip(*strs):
    print(i)
AI 代码解读

在这里插入图片描述

转为集合

然后将这一个个元组转为集合

strs = ["flower","flow","flight"]
s = ""
for i in zip(*strs):
    print(i)
    n = set(i)
    print(n)
AI 代码解读

在这里插入图片描述
集合会将重复的元素去除!

判断集合长度是否为1

strs = ["flower","flow","flight"]
s = ""
for i in zip(*strs):
    print(i)
    n = set(i)
    print(n)
    if len(n) == 1:
        s += i[0]
    else:
        break
print(s)
AI 代码解读

如果为1就作为前缀。
在这里插入图片描述
输出最长公前缀!

代码整合:

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        s = ""
        for i in zip(*strs):
            print(i)
            n = set(i)
            print(n)
            if len(n) == 1:
                s +=i[0]
            else:
                break
        return s
AI 代码解读

提交结果

在这里插入图片描述
虽然不高,不过也是一种解法!

优化

def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        n = list(map(set, zip(*strs)))
        s = ""
        for m, i in enumerate(n):
            i = list(i)
            if len(i) == 1:
                s +=i[0]
            else:
                break
        return s
AI 代码解读

在这里插入图片描述

目录
打赏
0
0
1
0
3
分享
相关文章
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
112 1
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
44 3
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
78 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
5月前
|
Leecode 101刷题笔记之第四章:和你一起你轻松刷题(Python)
这篇博客是关于LeetCode上使用Python语言解决二分查找问题的刷题笔记,涵盖了从基础到进阶难度的多个题目及其解法。
41 0
|
5月前
|
Leecode 101刷题笔记之第三章:和你一起你轻松刷题(Python)
本文是关于LeetCode算法题的刷题笔记,主要介绍了使用双指针技术解决的一系列算法问题,包括Two Sum II、Merge Sorted Array、Linked List Cycle II等,并提供了详细的题解和Python代码实现。
36 0
|
5月前
|
Leecode 101刷题笔记之第二章:和你一起你轻松刷题(Python)
本文是关于LeetCode 101刷题笔记的第二章,主要介绍了使用Python解决贪心算法题目的方法和实例。
36 0
Python编写单词复习小程序
Python编写单词复习小程序
46 0
|
7月前
|
[python]为指定目录下的文件名批量加前缀
[python]为指定目录下的文件名批量加前缀

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等