python(leetcode)-14最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"]
输出: "fl"
示例 2: 输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明: 所有输入只包含小写字母 a-z 。
这题比较好理解,给定一个列表,查询列表中的公共前缀
自己的想法是直接暴力法解决,将列表的第一个值作为对比值,通过一层for循环不断遍历对比值与其他元素是否相等,如果相等则继续对比,如果不等return比较过的值。
上代码(40ms)击败12%用户
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
sig=True
i=0
if(strs==[] ): #判断是否为空
return ""
if(len(strs)==1): #判断是否只有一个值
return strs[0]
if ("" in strs): #判断有没有空值
return ""
while(sig==True ): #sig是一个bool类型值 True继续判断 False中断返回
if(len(strs[0])<=i): #判断对比值是否越界
return strs[0][0:i]
temp=strs[0][i] #第i个字符
for j in strs[1:]:
if(temp!=j[i] ): #如果第i字符不匹配 则返回前i-1个字符
return strs[0][0:i]
elif(temp==j[i] and len(j)==i+1): #如果第i字符为最后一个一字母,则不继续对比,返回前i个
sig=False
k=i
i += 1
return strs[0][0:k+1]
if __name__=="__main__":
s=Solution()
li=["flower","flo","flight"]
print(s.longestCommonPrefix(li))
看了评论区大佬的代码,觉得有一个想法特别好
上代码(28ms)击败94%
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs: return ""
if len(strs) == 1: return strs[0] strs.sort()
p = ''
for x, y in zip(strs[0], strs[-1]):
if x == y:
p += x
else:
break
return p
if __name__=="__main__":
s=Solution()
li=["flower","fl","flight"]
print(s.longestCommonPrefix(li))
解释一下:
前两句没啥好说的,判断特殊情况
然后进行排序,直接将第一个元素和最后一个元素对比,提取出相同字符。
特点:排序后的列表,不需要对比中间的元素 直接对比最后两个即可。
python(leetcode)-14最长公共前缀的更多相关文章
- LeetCode 14. 最长公共前缀(Longest Common Prefix)
14. 最长公共前缀 14. Longest Common Prefix 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". Lee ...
- Java实现 LeetCode 14 最长公共前缀
14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",&quo ...
- [LeetCode]14.最长公共前缀(Java)
原题地址: longest-common-prefix 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:st ...
- leetcode 14 最长公共前缀
描述: 给个字符串vector,求最长公共前缀. 解决: 直接取第一个字符串作为最长公共前缀,将其每个字符遍历过一次.设最长字符实际为k,共n个元素,则复杂度O(nk) string longestC ...
- LeetCode 14. 最长公共前缀(Longest Common Prefix)
题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...
- LeetCode 14.最长公共前缀(Python3)
题目: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow& ...
- LeetCode:最长公共前缀【14】
LeetCode:最长公共前缀[14] 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flo ...
- 【Leetcode】【简单】【14最长公共前缀】【JavaScript】
题目 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...
- python刷LeetCode:14. 最长公共前缀
难度等级:简单 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...
随机推荐
- SpringBoot放置在static下面的静态页面无法访问
最近写项目本来写的好好的,突然static的静态页面访问不了了. 于是我各种上网查资料,看大佬的解决方案,还是没有解决. 直到发现了这篇文章 https://blog.csdn.net/cmqwan/ ...
- http 自定义信息头(header)设置与获取
一.后端设置(如:java) 在你服务端(如:java)返回的时候写上: res.setHeader("Access-Control-Expose-Headers",propNam ...
- 三、PyQt5不同方法创建菜单栏、工具栏和状态栏
创建菜单栏.工具栏和状态栏可以直接通过代码实现,也可以通过Qt Designer中的属性编辑器等实现.通过两种方法的学习可以加深理解,更好的掌握PyQt5. 一.菜单栏与状态栏 状态栏的设置比较简单, ...
- UVA 10944 Nuts for nuts..
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=21&p ...
- python 实现快排序
def q_sort(arr): if len(arr)<2: return arr pivot = arr[0] less = [x for x in arr[1:] if x <= p ...
- 整合 springboot 和 swagger出问题
整合 springboot 和 swagger ,出现报错, org.springframework.beans.factory.UnsatisfiedDependencyException: Err ...
- 微信小程序开发之搞懂flex布局2——flex container
容器的概念,是用来包含其它容器(container)和项目(item). flex container——flex容器 A flexbox layout is defined using the fl ...
- MySql添加远程超级管理员用户
可以通过发出GRANT语句增加新用户:首先在数据库本机上用ROOT用户登录上MySql,然后运行命令: mysql>GRANT ALL PRIVILEGES ON *.* TO admin'@' ...
- Python 打印矩形、直角三角形、等腰三角形、菱形
# 1)打印一个星号 print('*') #2)打印一行6个星号 * * * * * * for i in range(6): print('*',end=' ') #3)打印6列星号 * * * ...
- (PMP)第1章-----引论
1.指南概述和目的: 2.基本要素: 项目:创造独特的产品,服务或成果而进行的临时性工作.特点:1.临时性 临时性并不一定意味着项目时间短.2.独特性 3.渐进明细性 项目管理:就是将知识,技 ...