当前位置: 首页 > news >正文

leetcode5 最长公共前缀三种python解法

14. 最长公共前缀

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

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

示例 1:

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

示例 2:

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

一开始觉得难的地方是在字符串数组里循环字符串,然后再挨个比较字符串里面的字母是否相同,后来find函数——检测字符串中是否包含子字符串 str

str1.find(str, beg=0, end=len(string))

返回值,默认是0,如果没找到返回-1;因此只要选择list中任意一个字符串作为子字符串,循环检索list每个字符串(比较要注意,比较如果没有就让子字符串从后面-1,此时不去检索下一个,而是一直循环在这个字符串上,接着find直至找到相同的部分,因为是公共的必须满足每一个都找到相同的)

法一:

class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if not strs:return ""res=strs[0]#先res=第一个字符串for i in range(1,len(strs)):while strs[i].find(res)!=0:res=res[0:len(res)-1]#如果没找到就减一个i+=1return res

法二:字符串sort后 字典中以最小和最大的相同位置字符进行比较,循环终止条件是遇到不想等的字符或者是到达某一个字符串的末尾

class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if not strs:return ""strs.sort()first=strs[0]last=strs[-1]res=""length=len(first)for i in range(length):if i<length and first[i]==last[i]:res+=first[i]else:breakreturn res
  • 字符串相加是字符串
  • else:break必须,因为是从前向后检索,有不相同那么后面所有都不相同就不用for往后循环了

法三:python的zip函数将列表(对象)打包为元组,按列组合+enumerate在回文数中用于遍历列表(或者元组、字符串)的下标和元素

class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if not strs:return ""for i, str in enumerate(zip(*strs)):if len(set(str))>1:#str为字符串按列组合——下标相同;set是组成集合,过滤重复元素;如果=1是都相同,如果>1则对应相同下表的字符不相同return strs[0][0:i]return min(strs)

*strs使用解包操作符,把strs元素拆分册灰姑娘多个单独的参数,zip把相同位置的字符打包成元组,for中如果有字符不相同就返回strs中任意一个字符串的前i-1个元素;如果没有就返回长度最小的一定是公共的

http://www.lryc.cn/news/253248.html

相关文章:

  • 对小程序的初了解
  • QLineEdit 的 InputMask掩码
  • 关于队列的简单理解
  • 加密市场进入牛初阶段?一场新的造富效应即将拉开帷幕!
  • Superset基础入门
  • 【泛微ecology】将多个字段的数据合并到一个字段
  • WebSocket入门介绍及编程实战
  • vue3里面生命周期的使用
  • 在python的Scikit-learn库中,可以使用train_test_split函数来划分训练集和测试集。
  • 外包干了2个月,技术明显退步了...
  • 数据结构:链表应用:第9关:删除链表中满足区间值的结点
  • 了解 ignore_above 参数对 Elasticsearch 中磁盘使用的影响
  • C#中的async/await异步编程模型
  • 【原创】提升MybatisPlus分页便捷性,制作一个属于自己的分页插件,让代码更加优雅
  • pythonselenium自动化测试实战项目
  • 智能优化算法应用:基于瞬态优化算法无线传感器网络(WSN)覆盖优化 - 附代码
  • springMVC 三大组件解析
  • 聊聊nginx的keepalive_time参数
  • 沐风老师3DMAX键盘球建模方法详解
  • 算法通关村第一关—白银挑战—链表高频面试算法题—查找两个链表的第一个公共子节点
  • C/C++ 发送与接收HTTP/S请求
  • 【算法集训】基础数据结构:一、顺序表(下)
  • [Java][项目][战斗逻辑]基于JFrame的文字游戏
  • 顺序表和链表面试题
  • 树_二叉搜索树累加求和
  • gcc编译流程概述
  • 【web安全】ssrf漏洞的原理与使用
  • 佳易王会员管理软件店铺积分以及积分兑换系统
  • Django回顾【二】
  • [Ubuntu 18.04] RK3399搭建SSH服务实现远程访问