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]
最懒的人就是整天忙得没时间学习、反思、成长的人。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2020-01-11 kafka中对于zookeeper的理解和leader选举过程