【LeetCode03】查找字符串最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
先思考一下,后面我会给出一个解题思路~?
图来自网络
这道题主要考核的还是python的zip和set的用法,如果对这两个熟悉的话就可以很容易的实现。
主要思路如下:
1 )找出列表Strs 里,每个字符串的第k位(k=0,1,2,3...),组成一个集合k
如列表Strs = ["flower","flow","flight"],执行(1)后,得到:
{'f'}
{'l'}
{'i', 'o'}
{'w', 'g'}
2 )判断集合的长度是否为1,如果是,标记为True,否则为False
[True, True, False, False]
3 )查找第一次出现False的位置,返回最长前缀。
即第3位,所以最长前缀为 strs[0][:,2]
(strs[0] 代表字符列表里的第一个字符串)
Python实现:
def longestCommonPrefix(self, strs: List[str]) -> str:
try:
is_same=[] # 用于储存当前字符是否一致
for _ in zip(*strs):
is_same += [len(set(_)) == 1]
is_same+= [False] # 防止只有一个长度的字符串,如['a'], 那么is_same只会有True,没有False,会报错
return strs[0][:is_same.index(False)]
except:
# 其他情况返回空
return ''
以上的逻辑,还可以用更加极客优美的短语法完成。
Python实现:
def longestCommonPrefix(strs) -> str:
is_same = [len(set(c)) == 1 for c in zip(*strs)] + [False]
return strs[0][:is_same.index(0)] if strs else ''
? 配图角色背景介绍:
蜘蛛侠初次登场是在1962年8月,在杂志惊奇幻想(Amazing Fantasy)第15期,后来十分受欢迎才有了以他为主题的漫画。 Peter Parker在一次课外活动中,意外的被一只受过放射性感染的蜘蛛咬伤后,获得具有蜘蛛一般的特殊能力。而改变Peter Parker的一生,决定成为蜘蛛侠的关键,就在于班叔叔(Uncle Ben)遭人伤害,Peter 认为这是他的错误,因此选择成为蜘蛛侠来拯救世界上更多的人。 漫画首次聚焦于一个青少年英雄身上,这在当时算是一个突破了,也让那些年轻读者很容易产生共鸣,后来这个漫画形象拍了好些动画和剧集,包括最近几年取得超级成功的三部电影。同时,在“惊奇”漫画出品的一系列漫画书中,蜘蛛人也在成长,从一个害羞的高中生到一个困扰的大学生再到一个结了婚的教师,以及成为了超级英雄团队“复仇者”里的一员。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- codeforces 1395C(暴力枚举)
- 不到100行代码搞定Python做OCR识别身份证,文字等各种字体
- codeforces 1389B(贪心)
- 又一个自动生成项目目录组件tree-cli,快速生成Readme项目结构
- 用Vue CLI创建uni-app,摆脱HBuilder,npm命令行运行及发布
- codeforces 1133D(map+精度控制)
- 1024程序员节 | 我在腾讯自研数据库,我为技术代言
- jasmine spyOn的单步调试
- codeforces 1363C(优先队列)
- 系统与应用异常定位诊断
- SQL优化终于干掉了“distinct”
- SAP Spartacus delivery mode页面Cannot find control with的错误消息
- codeforces 1349A(数学)
- 阔别两年,webpack 5 正式发布了!
- SAP Spartacus delivery mode continue button enable与否的逻辑