题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例
题解一
class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:# 按照字典顺序找到strs中最大的字符串和最小的字符串str0 = min(strs)str1 = max(strs)for i in range(len(str0)):# str0和str1如果本身就没有相同前缀,那么直接返回空字符串# str0和str1如果本身有相同前缀,那么能保证strs中所有字符串都存在相同前缀,这是min和max决定。此时只需要找到从哪里不一样就行了。决定最大相同前缀的最大长度取决于min,比如[‘apple’,‘apples’],str0=‘apple’,str1=‘apples’if str0[i]!=str1[i]:return str0[:i]return str0
题解二
# zip(*strs) 是 Python 中的一个常见技巧,它被用来将多个可迭代对象(比如列表)中对应位置的元素打包成一个元组的迭代器。
# 在这个特定的例子中,strs 是一个字符串列表,*strs 表示将列表中的元素分别传递给 zip() 函数,而不是将整个列表作为一个单独的参数传递。
# 假设 strs 是 ["abc", "def", "ghi"]。zip(*strs) 实际上等价于 zip("abc", "def", "ghi"),它将返回一个迭代器,包含了三个元组 ('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', '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:# 遇到不等于1的直接跳出循环break return s