今天是道简单题,但解题过程中却收获了 zip 的用法,特此一记。
题目
第 14 题 最长公共前缀:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例:
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
注意:
所有输入只包含小写字母 a-z 。
思路
先说我最直观的思路,先找出列表(即字符串数组)中最短的字符串,接下来遍历整个列表,根据该最短字符串逐位、每次提取所有元素中的首位字符进行拼接,若提取出的字符出现空字符或其它字符,说明公共前缀获取完毕。例如示例中第一个,我们先找到最短的 “flow”, 接下来提取列表中所有元素第一位看是否全部为 “f”,“l”,“o”,“w”,当进行对 “o” 的检测时,从 “flight” 中提取到的是"i" 与目标不同,则公共前缀获取完毕,为前两位。
代码
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
# 先判断个特殊的,空列表直接返回空字符串
if strs==[]:
return ""
# 对列表遍历,获取最短的字符串,赋值给 shortest
l = len(strs)
shortest = ""
len_min = len(strs[0