0
点赞
收藏
分享

微信扫一扫

LeetCode14_最长公共前缀


1. 题目

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""

示例 1
输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。


提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]

2. 题解

from typing import List


class Solution:
# 方法1
def longestCommonPrefix(self, strs: List[str]) -> str:
result = ""
if len(strs) == 0:
return result
else:
result = strs[0]
for i in range(1, len(strs)):
result = self.sub_str(result, strs[i])
return result

def sub_str(self, str1, str2):
res = ""

for i in range(min(len(str1), len(str2))):
if str1[i] == str2[i]:
res = str1[:i + 1]
else:
res = str1[:i]
break
return res

# 方法2
def longestCommonPrefix_2(self, strs: List[str]) -> str:
res = ""
for i in zip(*strs):
if len(set(i)) == 1:
res += i[0]
else:
break
return res

# 方法3
def longestCommonPrefix_3(self, strs: List[str]) -> str:
if len(strs) == 0:
return ''
min_str = min(strs)
max_str = max(strs)

for i in range(len(min_str)):
if min_str[i] != max_str[i]:
return min_str[:i]
return min_str


if __name__ == "__main__":
s = Solution()
strs = ["flower", "flow", "flight"]
a = s.longestCommonPrefix_2(strs)
print(a)


举报

相关推荐

0 条评论