编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl" 示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明:
所有输入只包含小写字母 a-z 。
来源:力扣(LeetCode) 链接:https://leetcode-cn测试数据/problems/longest-common-prefix 我做该题的最开始就想的用第一个字符去匹配所有字符串,发现一个缺陷:
当出现比第一个字符长度还小且匹配的字符串就会报错,于是把列表长度最小的当判断点。
class Solution: def longestCommonPrefix(self, strs): if len(strs) == 1: # 字符串数组只有一个时返回它本身。 return strs[0] if len(strs) == "" or strs == []: return "" a = len(strs) n = a-1 while n >= 0: # 从大到小排序 if len(strs[n]) < len(strs[n-1]): s = strs[n] strs[n] = strs[n-1] strs[n-1] = s n -= 1 b = len(strs[len(strs)-1]) # 获得长度最小的字符串长度,并保证字符串数组最后一个为最短 j = 0 p = 0 if b <= 0: # 当最小的长度等于0,那么便没有公共前缀。 return "" while True: while strs[0][j] != strs[p+1][j]: if strs[0][:j] == None : return "" else: return strs[0][:j] p += 1 if p >= a-1: j += 1 p = 0 if j == len(strs[p-1]): # 当j等于最短的字符串长度直接返回 return strs[0][:j]
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did171763