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

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

示例 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
 

最新文章

  1. x01.BSheepTree: 树
  2. 遍历ArrayList时同时修改引发的问题
  3. sys.stdout.write与sys.sterr.write(三)
  4. Java操作xml文件
  5. Ubuntu 14.10 下安装navicat
  6. C#中数据类型的安全转换(is,as)
  7. memcached学习笔记——存储命令源码分析下篇
  8. 连接远程hbase长时间等待问题
  9. iptables实用教程(二):管理链和策略
  10. #centos7 创建内网yum源 OpenStack源部署
  11. JavaScript ECMAScript版本介绍
  12. 根据ccid取得账户,更改某段值再创建账户,返回新的ccid
  13. 从MySQL中导入数据到MongoDB中
  14. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>
  15. ES6之Array数组
  16. javascript History对象属性和方法
  17. Mac Apache WebServer 服务器配置
  18. Java之.jdk安装-Windows
  19. Unity 3D UGUI Toggle用法教程
  20. HBase(三)HBase架构与工作原理

热门文章

  1. [hdu4630] No Pain No Game
  2. javaSE复习之——线程
  3. 从一道网易面试题浅谈 Tagged Pointer - darcy_tang 的博客
  4. React Native拆包及热更新方案 · Solartisan
  5. (转载)SVN使用说明
  6. Ubuntu19.10安装OMNeT++ (omnetpp-5.6)中遇到的问题
  7. TDA2050功率放大器研究
  8. C++走向远洋——63(项目二2、两个成员的类模板)
  9. 我去,你写的 switch 语句也太老土了吧
  10. xshell6使用的命令