编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: s = "" for i in zip(*strs): if len(set(i)) == 1: s += i[0] else: break return s
解题思路:
摘自python3.8的官方文档
创建一个聚合了来自每个可迭代对象中的元素的迭代器。 返回一个元组的迭代器,其中的第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。 当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回一个单元组的迭代器。 不带参数时,它将返回一个空迭代器。
例如输入的是:
["flower","flow","flight"]
在zip里的for循环打印出i是这样的
('f', 'f', 'f')
('l', 'l', 'l')
('o', 'o', 'i')
也就是官方文档所说的“其中的第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素”
为什么只迭代到 ('o', 'o', 'i') 呢?
是因为“当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代”
最后再利用 set 的key不重复的特性进行判断
标签:zip,14,迭代,python,元组,strs,输入,前缀 From: https://www.cnblogs.com/10086upup/p/17600778.html