题目:最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
方法1:找到最短的字符串,遍历这个字符串,然后和其他字符串的每一位取匹配。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
s1 = strs[0]
for s in strs:
if len(s) < len(s1):
s1 = s
# print(s1)
i = 0
while i < len(s1):
flag = 1
for j in strs:
if j[i] != s1[i]:
flag = 0
break
if flag:
i += 1
else:
break
print(i)
return s1[:i]
方法2:使用库函数。
import os
strs = ["flower", "flow", "flight"]
print(os.path.commonprefix(strs)) # fl
方法3:使用zip的解压缩功能。
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs) == 1:
return strs[0]
unzipped_strs = list(zip(*strs))
#print(unzipped_strs) # [('a', 'a')]
res = ""
for t in unzipped_strs:
if len(set(t)) == 1:
res += t[0]
else:
break
return res
strs = ["a", "ab"]
s1 = Solution()
res = s1.longestCommonPrefix(strs)
print(res) # a