题目来源:https://leetcode-cn.com/problems/longest-common-prefix/python
编写一个函数来查找字符串数组中的最长公共前缀。segmentfault
若是不存在公共前缀,返回空字符串 ""。数组
示例 1:微信
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:app
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:函数
全部输入只包含小写字母 a-z 。spa
3
,4
,得出字符串数组最长公共前缀。class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: '''找出字符串数组最长公共前缀 Args: strs: 传入待匹配的字符串数组 Returns: 返回字符串数组中存在的最长公共前缀 不存在则返回空字符串 "" ''' # 若列表为空,直接返回空字符 if not strs: return "" # 取首位字符串,以待与后面进行比较 prefix = strs[0] # 遍历字符串数组,逐个比较 for i in range(1, len(strs)): # 比较两字符串,找到公共前缀前,逐个比较 while strs[i].find(prefix) != 0: # 未找到公共前缀前,从末尾逐个删减 prefix = prefix[0:len(prefix)-1] # 若无公共前缀,直接返回 if len(prefix) == 0: return "" return prefix
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: '''找出字符串数组最长公共前缀 Args: strs: 传入待匹配的字符串数组 Returns: 返回字符串数组中存在的最长公共前缀 不存在则返回空字符串 "" ''' # 利用 zip() 函数的特性,逐列比较字符串数组中的每一个字符串 prefix_len = [] # 用以保存共同字符的长度 for num,s in enumerate(zip(*strs)): # 利用 set() 去重复 # 若只保留 1 个字符,则表示该列相同 # 不然该列不一样,直接跳出 if len(set(s)) == 1: prefix_len.append(num) else: break # 若是 prefix_len 为空直接返回空字符串 # 不然截取任意字符串的 prefix_len 列表长度的字符,即为最长公共前缀 return strs[0][:len(prefix_len)] if prefix_len else ""
以上就是本篇的主要内容3d
欢迎关注微信公众号《书所集录》