14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: [“flower”,”flow”,”flight”]
输出: “fl”
示例 2:
输入: [“dog”,”racecar”,”car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
方法一:
class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if not strs:return ""str1 = strs[0]for i in range(1, len(strs)):str1 = self.lcp(str1, strs[i])if str1 == None:breakreturn str1def lcp(self, str1, str2):length, i = min(len(str1), len(str2)), 0while i<length and str1[i] == str2[i]:i+=1return str1[:i]
方法二:
利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀。
def longestCommonPrefix(self, strs):if not strs: return ""s1 = min(strs)s2 = max(strs)for i,x in enumerate(s1):if x != s2[i]:return s2[:i]return s1
