编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解题思路
解法一
遍历每一个单词,取每一个单词同一个位置的字母,查看是否相同
利用好zip和set
zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回元组组成的列表
set()是一个无序的不重复的元素序列
- 取每一个元素的同一位置的字母,放到set中
- 如果set的长度 == 1,则代表这个位置上的字母相同,否则跳过
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
result = ''
for temp in zip(*strs):
temp_set = set(temp)
if len(temp_set) == 1:
result += temp[0]
else:
break
return result
解法二
-
取一个单词s作为默认前缀t
-
t与后面的单词比较,取出t与每一个单词相同的最长前缀。
-
遍历字符串列表,重复2的操作
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
网友评论