最长公共前缀(py)
2024-09-06 15:47:33
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
python解法:
因为python中有max,min可以比较字符串ascii的大小,可以直接找到max和min字符串,对比它们的公共前缀,即为最长公共前缀。max的前缀后一位存在且比min大,所以在min中找前缀。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs : return ""
s1=max(strs)
s2=min(strs)
for i,x in enumerate(s2):
if x != s1[i]:
return s1[:i]
return s2
执行结果:
通过
显示详情
执行用时 :24 ms, 在所有 Python3 提交中击败了99.75%的用户
内存消耗 :13.2 MB, 在所有 Python3 提交中击败了41.66%的用户
看讨论后发现还可以用zip来解答
把str看成list然后把输入看成二维数组,左对齐纵向压缩,然后把每项利用集合去重,之后遍历list中找到元素长度大于1之前的就是公共前缀
def longestCommonPrefix(self, strs):
if not strs: return ""
ss = list(map(set, zip(*strs)))
res = ""
for i, x in enumerate(ss):
x = list(x)
if len(x) > 1:
break
res = res + x[0]
return res
最新文章
- x01.BSheepTree: 树
- 遍历ArrayList时同时修改引发的问题
- sys.stdout.write与sys.sterr.write(三)
- Java操作xml文件
- Ubuntu 14.10 下安装navicat
- C#中数据类型的安全转换(is,as)
- memcached学习笔记——存储命令源码分析下篇
- 连接远程hbase长时间等待问题
- iptables实用教程(二):管理链和策略
- #centos7 创建内网yum源 OpenStack源部署
- JavaScript ECMAScript版本介绍
- 根据ccid取得账户,更改某段值再创建账户,返回新的ccid
- 从MySQL中导入数据到MongoDB中
- Visual Studio 中使用万能头文件 #include <;bits/stdc++.h>;
- ES6之Array数组
- javascript History对象属性和方法
- Mac Apache WebServer 服务器配置
- Java之.jdk安装-Windows
- Unity 3D UGUI Toggle用法教程
- HBase(三)HBase架构与工作原理
热门文章
- [hdu4630] No Pain No Game
- javaSE复习之&mdash;&mdash;线程
- 从一道网易面试题浅谈 Tagged Pointer - darcy_tang 的博客
- React Native拆包及热更新方案 ·; Solartisan
- (转载)SVN使用说明
- Ubuntu19.10安装OMNeT++ (omnetpp-5.6)中遇到的问题
- TDA2050功率放大器研究
- C++走向远洋——63(项目二2、两个成员的类模板)
- 我去,你写的 switch 语句也太老土了吧
- xshell6使用的命令