编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
#方法1 通过设置标杆,逐个遍历获得最长公共前缀
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""#strs为空
for i in range(len(strs[0])):#以列表中第一个字符串作为标杆进行对比
for string in strs[1:]:
if i>=len(string) or strs[0][i]!=string[i]:
return strs[0][:i]
return strs[0]#第一个字符串为空或者列表中只有一个字符串(两个进不去for循环的情况)
#方法2 暂时不懂原理,抄的其他人的(效率高了很多)
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
result = ""
i=0
while True:
try:
sets =set(string[i] for string in strs)
if len(sets) == 1:
result+=sets.pop()
i+=1
else:
break
except Exception as e:
break
return result