python查找字符串最长公共前缀_python leetcode

python查找字符串最长公共前缀_python leetcodepython(leetcode)-14最长公共前缀

大家好,又见面了,我是你们的朋友全栈君。

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

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

示例 1:

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

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

所有输入只包含小写字母 a-z 。

 这题比较好理解,给定一个列表,查询列表中的公共前缀

自己的想法是直接暴力法解决,将列表的第一个值作为对比值,通过一层for循环不断遍历对比值与其他元素是否相等,如果相等则继续对比,如果不等return比较过的值。

上代码(40ms)击败12%用户

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         sig=True
 8         i=0
 9         if(strs==[] ):  #判断是否为空
10             return ""
11         if(len(strs)==1): #判断是否只有一个值
12             return strs[0]
13         if ("" in strs): #判断有没有空值
14             return ""
15         while(sig==True ):    #sig是一个bool类型值 True继续判断 False中断返回
16             if(len(strs[0])<=i): #判断对比值是否越界
17                 return strs[0][0:i]
18             temp=strs[0][i]   #第i个字符
19             for j in strs[1:]:
20                 if(temp!=j[i] ): #如果第i字符不匹配 则返回前i-1个字符
21                     return strs[0][0:i]
22                 elif(temp==j[i] and len(j)==i+1): #如果第i字符为最后一个一字母,则不继续对比,返回前i个
23                      sig=False
24                      k=i
25             i += 1
26         return strs[0][0:k+1]
27 if __name__=="__main__":
28     s=Solution()
29     li=["flower","flo","flight"]
30     print(s.longestCommonPrefix(li))

看了评论区大佬的代码,觉得有一个想法特别好

上代码(28ms)击败94%

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         if not strs: return ""
 8         if len(strs) == 1: return strs[0]
 9 
10         strs.sort()
11         p = ''
12         for x, y in zip(strs[0], strs[-1]):
13             if x == y:
14                 p += x
15             else:
16                 break
17         return p
18 if __name__=="__main__":
19     s=Solution()
20     li=["flower","fl","flight"]
21     print(s.longestCommonPrefix(li))

解释一下:

前两句没啥好说的,判断特殊情况

然后进行排序,直接将第一个元素和最后一个元素对比,提取出相同字符。

特点:排序后的列表,不需要对比中间的元素 直接对比最后两个即可。

转载于:https://www.cnblogs.com/bob-jianfeng/p/10436557.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106974.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 慧荣SM2246主控开卡一直处于Pretest状态解决方案

    慧荣SM2246主控开卡一直处于Pretest状态解决方案慧荣SM2246开卡;CH通道;CE使能

    2022年6月10日
  • 使用PyTorch进行语义分割「建议收藏」

    使用PyTorch进行语义分割「建议收藏」本篇文章使用进行pytorch进行语义分割的实验。1.什么是语义分割?语义分割是一项图像分析任务,我们将图像中的每个像素分类为对应的类。这类似于我们人类在默认情况下一直在做的事情。每当我们看到某些画面时,我们都会尝试“分割”图像的哪一部分属于哪个类/标签/类别。从本质上讲,语义分割是我们可以在计算机中实现这一点的技术。您可以在我们关于图像分割的帖子中阅读更多关于分割的内容。这篇文章…

    2022年8月21日
  • java常量池和字符串常量池_java声明常量

    java常量池和字符串常量池_java声明常量本篇文章带大家认识Java基础知识——字符串类,在前面我们已经知道如何在Java中定义字符串,本文将介绍Java字符串中的字符串常量池,探究字符串相等问题。

    2022年7月28日
  • 微软真好笑[通俗易懂]

    微软真好笑[通俗易懂]近日利用excel的vba开发一个个人管理软件,对微软件真有深刻体会了。vba中检测错误太搞笑了,检测到错误没有指出给开发人员,却要中断然后打包给微软件本身,搞得编写得神经十分紧张,每编完一写就要编译一下以检测错误,否则又中断,又得从头来过。这是微软为开发人员的着想吗?我只有苦笑!!编到最后试过几次都基本成功了,到晚上再试一下,却不加载窗体,连命令按钮也认识不了。

    2022年7月19日
  • p2p网络传输协议

    p2p网络传输协议P2P是英文Peer-to-Peer(对等)的简称,又被称为“点对点”。“对等”技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。P2P还是英文PointtoPoint(点对点)的简称。它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续做主机上传,这种下载方式,人越多速度越快但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较…

    2022年7月16日
  • ora-01006:绑定变量不存在_输出参数不是绑定变量

    ora-01006:绑定变量不存在_输出参数不是绑定变量  #命令行新建job错误:ORA-01008并非所有变量都已绑定。 1、改正前代码:DECLAREjobNUMBER;begin      sys.dbms_job.submit(job=&gt;:job, what=&gt;’P_AUTO_FETCH_RECORDS;’, next_date=&gt;to_…

    2022年9月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号