QQ:3020889729 小蔡
如下解题思路,仅表示我的作题思路或引荐别人的方法——若有引用我会标注出来的python
编写一个函数来查找字符串数组中的最长公共前缀。
若是不存在公共前缀,返回空字符串 “”。
测试样例:
输入: [“flower”,“flow”,“flight”]
输出: “fl”web
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if len(strs) == 0: return "" if len(strs) == 1: return strs[0] first_jg = strs[0] # 获取首元素做为最开始的公共字段 for i in range(1, len(strs)): # 进行字段查找遍历 while strs[i].find(first_jg ) != 0: # 当找到最长公共字段后就会破出 first_jg = first_jg [:-1] # 不然减去最后一个字符!!! return ptspr
我把思路主要放在代码中:
简要的思路是:先判断元素的最小字符串长度,而后再进行前缀的判断——为了得到公共字符,就取第一个字符串的每个元素做为标准,依次进行判断,知足的字符链接起来,返回就能够了——可是只要遇到一个不一样就应该退出遍历了~~~数组
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: zero = 0 # 查找数组的元素的字符串最短长度 outpust = '' # 输出的公共字段 juge = '' # 某一个肯定的公共字符 counts = 0 # 做为该公共字符是否为有效公共字符 for i in range(0, len(strs)): zero = max(zero, len(strs[i])) # 先获取元素最大长度 for i in range(0, len(strs)): zero = min(zero, len(strs[i]))ha # 再由最大长度获取最小长度 for j in range(0, zero): # 根据最小长度为依据,进行遍历可能的公共前缀字符 counts = 0 for i in range(0, len(strs)): if i == 0: juge = strs[i][j] # 每次数组遍历时,把第一个元素的j位字符做为依据进行后边的判断 else: if juge == strs[i][j]: counts += 1 # 每一次判断字符相等,就记一次数 else: counts = -2 # 结束公共前缀字符的判断 break # 遇到一个不相等就破出循环 if counts == (len(strs) - 1): # 公共前缀字符的合成 outpust += juge # 加上知足的字符 elif counts == -2: # 提早破出条件 break return outpust