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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 调用ShellExecute所须要头文件

    调用ShellExecute所须要头文件

  • idea插件开发指南_idea get set插件

    idea插件开发指南_idea get set插件gitee地址:https://gitee.com/jyq_18792721831/studyplugin.gitidea插件开发入门idea插件开发–配置idea插件开发–服务-翻译插件idea插件开发–组件–编程久坐提醒介绍组件应用程序启动项目打开模块打开应用程序/项目关闭监听程序代码中注册监听器声明注册监听器项目级的监听器声明注册的其他配置自定义监听器接口消息系统设计主题消息总线连接广播嵌套消息组件定义应用程序级别项目级别监听器定义Java计时器实例需求分解项目创建配置界面存储服务配置和

  • 网页制作:一个简易美观的登录界面

    网页制作:一个简易美观的登录界面这次来总结一下公司的Task1实现一个登录界面。登录界面其实在大三的时候就有做过,但是当时做的界面超级low,主要区别在于有无css,由于公司的设计要求,对于该界面的很多细节处理实在不容易。所以,还是想要写点东西记录一下。先截个图,展示一下效果吧:然后我们看一下代码:在我们做一个页面之前,要先想好他的一个整体布局,也就是我们这里面的login.html主页面,大致结构如…

  • Android SDK 下载安装及配置[通俗易懂]

    Android SDK 下载安装及配置[通俗易懂]SDK下载安装及配置

  • clientWidth offsetWidth innerWidth 区别(窗口尺寸 汇总)「建议收藏」

    clientWidth offsetWidth innerWidth 区别(窗口尺寸 汇总)「建议收藏」原文链接:http://www.cnblogs.com/youxin/archive/2012/09/21/2697514.htmlscrollWidth 是对象的实际内容的宽,不包边线宽度,会随对象中内容的多少改变(内容多了可能会改变对象的实际宽度)。 clientWidth 是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。 offsetWidth 是对象的可

  • 解决Mac笔记本电脑自带录屏软件没有声音问题「建议收藏」

    解决Mac笔记本电脑自带录屏软件没有声音问题「建议收藏」Mac自带录屏功能,通过快捷键⌘-Shift-5即可唤醒该功能,点击录制即可开始录制,录制之前还能调整录制的框选区域。但是这个录屏功能有个缺点,不能录下声音(不管是外置的还是内置的),但是我们可以通过Loopback软件来让Mac的录屏功能同时把声音也录进去。Loopback借助这个软件可以把内置声音录进去,且音质很顶,且录屏的时候,你可以听得到声音。下载地址:loopback官网…

发表回复

您的电子邮箱地址不会被公开。

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