3.最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

这题自己采用的笨方法,浪费了不少时间。

主要是好多异常场景没有考虑全,导致有些特殊场景会执行失败。。。

比如:列表中存在空字符串、列表长度为1,列表中的字符串长度不一致等等

这里采用了一个flag作为跳出while循环的标识。

循环内的情况为:

第11行单独处理长度为1的列表;

第13行读取列表中第i个字符串的每个字符;

第14行要求列表中第i个字符串和第i+1个字符串长度都要大于比较序号,否则就会出现out of range的错误;

第15行判断上面两个字符串中的前n个字符是否相等,相等就继续比较,不相等就跳出循环;

最后返回任意一个字符串中的前n个字符。OK

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         strs_len = len(strs)
 8         n = 0
 9         flag = 1
10         while flag:
11             if strs_len == 1:                               #当列表长度为1时,需单独处理
12                 return strs[0]
13             for i in range(strs_len-1):
14                 if len(strs[i]) >n and len(strs[i+1]) >n:   #当前和下一个字符串长度都要大于比较序号
15                     if strs[i][n] == strs[i+1][n]:
16                         continue
17                     else:
18                         flag = 0
19                 else:
20                     flag = 0
21             n += 1
22         return strs[0][0:n-1]
最懒的人就是整天忙得没时间学习、反思、成长的人。
原文地址:https://www.cnblogs.com/jockeyhao/p/15789162.html