leetcode-14. 最长公共前缀---pythony(优势体现)
Posted 大聪明Smart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-14. 最长公共前缀---pythony(优势体现)相关的知识,希望对你有一定的参考价值。
14. 最长公共前缀
难度简单1800收藏分享切换为英文接收动态反馈
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
-
暴力
随便找一个字符串(我们取strs[0])作为基准,循环最短字符串的长度数min(len(s) for s in strs)次,每一次比较每个字符传的对应序号字符for alph in strs[1:]:即可。
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if len(strs) == 1: return strs[0] first = strs[0] num = 0 count = min(len(s) for s in strs) while num < count: flag = True for alph in strs[1:]: if alph[num] != first[num]: flag = False break if flag: num +=1 else: break return first[:num]
-
字符串比较
核心思想:所有字符串的最长公共前缀即为这些字符串的最小字符串和最大字符串的最长公共前缀。
找出min(strs)和max(strs)的公共前缀返回即可。
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: min_str = min(strs) max_str = max(strs) res = '' for i in range(min(len(min_str), len(max_str))): if min_str[i] == max_str[i]: res += min_str[i] else: break return res
-
zip拉链函数
zip函数
class zip(object): """ zip(iter1 [,iter2 [...]]) --> zip object Return a zip object whose .__next__() method returns a tuple where the i-th element comes from the i-th iterable argument. The .__next__() method continues until the shortest iterable in the argument sequence is exhausted and then it raises StopIteration. """ pass
例如:
a = list(zip(*['abc', 'def', 'ghijk'])) print(a) [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: strs = [set(tup) for tup in zip(*strs)] res = '' for str in strs: if len(str) == 1: res += str.pop() else: break return res
以上是关于leetcode-14. 最长公共前缀---pythony(优势体现)的主要内容,如果未能解决你的问题,请参考以下文章