最长公共前缀(py)
Posted zccfrancis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共前缀(py)相关的知识,希望对你有一定的参考价值。
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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中找前缀。
1 class Solution: 2 def longestCommonPrefix(self, strs: List[str]) -> str: 3 if not strs : return "" 4 s1=max(strs) 5 s2=min(strs) 6 for i,x in enumerate(s2): 7 if x != s1[i]: 8 return s1[:i] 9 return s2
执行结果:
通过
显示详情
执行用时 :24 ms, 在所有 Python3 提交中击败了99.75%的用户
内存消耗 :13.2 MB, 在所有 Python3 提交中击败了41.66%的用户
看讨论后发现还可以用zip来解答
把str看成list然后把输入看成二维数组,左对齐纵向压缩,然后把每项利用集合去重,之后遍历list中找到元素长度大于1之前的就是公共前缀
1 def longestCommonPrefix(self, strs): 2 if not strs: return "" 3 ss = list(map(set, zip(*strs))) 4 res = "" 5 for i, x in enumerate(ss): 6 x = list(x) 7 if len(x) > 1: 8 break 9 res = res + x[0] 10 return res
以上是关于最长公共前缀(py)的主要内容,如果未能解决你的问题,请参考以下文章