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]
最懒的人就是整天忙得没时间学习、反思、成长的人。