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


相关推荐

  • recycleview的优化_recyclerview原理

    recycleview的优化_recyclerview原理最近研究应用流畅度专题时,发现RecyclerView里边的坑真多,有很多可以优化的点,在理解优化点之前,最好对RecyclerView的缓存机制有一些了解,比如得知道CacheView和RecycledViewPool的区别和联系,RecyclerView的绘制流程有一定了解,再来谈RecyclerView的性能提升。缓存机制可以看看这篇文章:基于滑动场景解析RecyclerView的回收复用机…

    2025年7月12日
    3
  • Idea激活码永久有效Idea2020.3.4激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2020.3.4激活码教程-持续更新,一步到位Idea激活码永久有效2020.3.4激活码教程-Windows版永久激活-持续更新,Idea激活码2020.3.4成功激活

    2022年6月17日
    428
  • 浅谈CSRF攻击方式

    浅谈CSRF攻击方式

    2021年11月5日
    48
  • 黄金k线图基础知识图解

    黄金k线图基础知识图解  黄金可以说是2019下半年最热门的投资品种,如果懂得选择像现货黄金这样但杠杆型产品,收益更是如虎添翼。但如果你只是刚开始进入这个市场的投资者,最好从黄金k线图基础知识图解开始,认证学习关于K线和交易的知识,才能掌握在黄金市场致富的密码。  一、黄金K线分类图解  1、如果按开、收盘价的关系,可分为阳线、阴线和同价线(十字线、T字线、一字线)。  2、如果按实体的大小,可分为大阳(阴)线、中阳(阴)线和小阳(阴)线。  3、如按影线的有无,可以分为光头K线、光脚K线、光头光脚K线和带有上下影的K线

    2022年5月28日
    65
  • 数据库课程设计实验报告–图书馆管理系统

    数据库课程设计实验报告–图书馆管理系统一、系统平台开发工具:EclipsejavaMars数据库MySQLserver,Navicat可视化工具操作系统:win10百度云链接:https://pan.baidu.com/s/1SIWR75NRIh8sSL0oV7uZgA提取码:4y44二、数据库规划1.任务陈述:图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员…

    2022年5月20日
    54
  • 安装maven及查看maven版本号

    1、从Apache官网下载maven的压缩包,目前最新的是apache-maven-3.6.0网站地址:http://maven.apache.org/2、解压到非中文目录即可在conf文件夹下的settings.xml是maven默认的配置,一般会修改maven的默认配置文件2.1、修改本地仓库的存放位置<!–本地仓库地址–><localRepos…

    2022年4月4日
    1.6K

发表回复

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

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