14. 最长公共前缀
1. 题目介绍
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明::
所有输入只包含小写字母 a-z 。
2. 代码实现
- 方法1
class Solution:
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
res = ""
for tmp in zip(*strs):
# set() 新建空集对象
tmp_set = set(tmp)
if len(tmp_set) == 1:
res += tmp[0]
else:
break
return res
zip(object)函数解析:
b = ["flower","flow","flight"]
for i in zip(*b):
print(i)
输出:
(‘f’, ‘f’, ‘f’)
(‘l’, ‘l’, ‘l’)
(‘o’, ‘o’, ‘i’)
(‘w’, ‘w’, ‘g’)
b = ["flower","flow","flight"]
for i in zip(*b):
# print(i)
print(set(i))
输出:
{‘f’}
{‘l’}
{‘i’, ‘o’}
{‘w’, ‘g’}
- 方法2
取一个单词 s,和后面单词比较,看 s 与每个单词相同的最长前缀是多少!遍历所有单词
class Solution:
def longestCommonPrefix(self, s: List[str]) -> str:
if not s:
return ""
res = s[0]
i = 1
while i < len(s):
while s[i].find(res) != 0:
res = res[0:len(res)-1]
i += 1
return res
S.find(sub[, start[, end]])函数解析:
find(sub[, start[, end]])
sub 检测str字符串中是否包含sub字符串 字符串参数,不可省略的参数
start 字符串开始查找偏移量 整型参数,可省略
end 字符串结束查找偏移量 整型参数,可省略
return : 返回S中找到子字符串sub的最低索引