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)