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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 函数类型_C语言函数类型

    函数类型_C语言函数类型函数类型在ECMAScript中有三种函数类型:函数声明,函数表达式和函数构造器创建的函数。每一种都有自己的特点。1.函数声明这种函数类型的主要特点在于它们仅仅影响变量对象。该特点也解释了第二

    2022年8月5日
    2
  • WPF中WrapPanel、StackPanel等添加滚动条ScrollViewer

    WPF中WrapPanel、StackPanel等添加滚动条ScrollViewerwpf中,在控件中直接设置ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility属性,并不能显示滚动条。因为在wpf中,想要显示滚动条,需要把控件放在滚动条视图控件(ScrollViewer)中。ScrollViewer属性说明:VerticalScrollBarVisibili

    2022年7月23日
    7
  • MySQL触发器

    MySQL在5.0.2版本以上开始支持触发器,触发器是有某些带有命令的时间来触发某些操作,这些事件包括insert语句、delete语句、update语句等。触发器可以用于记录对数据库的操作。1、创

    2021年12月25日
    42
  • mysql字符串函数:FIND_IN_SET()使用方法详解

    mysql字符串函数:FIND_IN_SET()使用方法详解

    2021年11月10日
    52
  • Java入门基础学习总结[通俗易懂]

    Java入门基础学习总结[通俗易懂]基础(Basics)打开CMD的方式:1.开始+系统+命令提示符2.Win键+R输入cmd打开控制台(推荐使用)3.在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口4.资源管理器的地址栏前面加上cmd一个空格路径常用的Dos命令#盘符切换D:冒号需用英文模式#查看当前目录下的所有文件dir#切换目录cdchangedirectorycd.. 返回上级目录#清理屏幕cls(clearscreen)#退出终端exit#查看电脑的i

    2022年7月8日
    21
  • 汇川plc编程实例梯形图_plc梯形图100实例详解

    汇川plc编程实例梯形图_plc梯形图100实例详解原文链接:汇川技术小型PLC梯形图编程系列教程(一):小型PLC型号H123U简介&nbsp;&nbsp;&nbsp;&nbsp;本人目前一直玩的都是汇川技术自己的PLC、伺服、变频器等等。所以本系列小型PLC梯形图编程教程,就以汇川技术的小型PLC作为平台,汇川的3种小型PLC-H1U,H2U,H3U。编程指令基本一致,H3U更高级一点,3U程序存储可以达到64k步,1k=1000步…

    2022年9月11日
    0

发表回复

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

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