刻意练习:LeetCode实战 -- Task14. 最长公共前缀
背景
本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了 三个简单、两个中等、一个困难 等级的题目,共计三十道题,利用三十天的时间完成这组刻意练习。
本次任务的知识点:字符串
字符串或串(string) 是由数字、字母、下划线组成的一串字符。一般记为 s = “a1a2...an”(n >= 0)
。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串在该串中首次出现的位置、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。串通常以顺序的方式进行存储与实现。
题目
- 题号:14
- 难度:简单
- https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z。
实现
C# 语言
- 状态:通过
- 118 / 118 个通过测试用例
- 执行用时: 144 ms, 在所有 C# 提交中击败了 94.92% 的用户
- 内存消耗: 23.4 MB, 在所有 C# 提交中击败了 11.69% 的用户
public class Solution {public string LongestCommonPrefix(string[] strs) {if (strs.Length == 0)return string.Empty;string result = strs[0];for (int i = 1; i < strs.Length; i++){result = Prefix(result, strs[i]);if (string.IsNullOrEmpty(result))break;}return result; }public string Prefix(string str1, string str2){int len1 = str1.Length;int len2 = str2.Length;int len = Math.Min(len1, len2);int i = 0;for (; i < len; i++){if (str1[i] != str2[i])break;}return i == 0 ? string.Empty : str1.Substring(0, i);}
}
Python 语言
- 执行结果:通过
- 执行用时:44 ms, 在所有 Python3 提交中击败了 35.93% 的用户
- 内存消耗:13.6 MB, 在所有 Python3 提交中击败了 5.14% 的用户
class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if len(strs) == 0:return ""result = strs[0]for i in range(len(strs)):result = self.Prefix(result, strs[i])if result == "":breakreturn resultdef Prefix(self, str1: str, str2: str) -> str:len1, len2 = len(str1), len(str2)i = 0while i < min(len1, len2):if str1[i] != str2[i]:breaki += 1return "" if i == 0 else str1[0:i]
往期活动
LSGO软件技术团队会定期开展提升编程技能的刻意练习活动,希望大家能够参与进来一起刻意练习,一起学习进步!
- Python基础刻意练习活动即将开启,你参加吗?
- Task01:变量、运算符与数据类型
- Task02:条件与循环
- Task03:列表与元组
- Task04:字符串与序列
- Task05:函数与Lambda表达式
- Task06:字典与集合
- Task07:文件与文件系统
- Task08:异常处理
- Task09:else 与 with 语句
- Task10:类与对象
- Task11:魔法方法
- Task12:模块
我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔。
我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。
愿我们一起学习,一起进步,相互陪伴,共同成长。
后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:
相关文章:

6.1.1 验证注解的使用
数据注解特性定义在名称空间System.ComponentModel.DataAnnotations 中(但接下来 将看到,有些特性不是定义在这个名称空间中)。它们提供了服务器端验证的功能,当在模 型的属性上使用这些特性之一时,框架也支持客户端验证。在名称空间DataAnno…

Javascript创建数组的方式你了解了吗
Javascript数组 数组(Array)是一种复杂的数据类型,它属于Object(对象)类型,用来将一组数组合在一起,通过一个变量就可以访问一组数据。在使用数组时,经常会搭配循环语句使用,从而很方便地对一组数据进行处理。 创建数组…

loadrunner另类玩法【测试帮日记公开课】
https://edu.51cto.com/course/10658.html

刻意练习:LeetCode实战 -- Task15. 有效的括号
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

对口令协议的几种攻击方式
1、窃听入侵者搭线窃听,试图从正在进行的通信中获得有用的信息。 2、重放入侵者记录过去通信中的消息并在以后的通信中重放它们。 3、中间人攻击入侵拦截各主体之间的消息,并用自己的消息来取代它们。在向服务器发送的消息中他假冒用户的身份,…

初学者如何学Java开发
初学者如何学Java开发?这是很多人都比较关注的一个问题,尤其是对于零基础想要学习java的同学,java技术语言包含的知识点有很多,下面小编就给大家整理一些建议希望可以帮到初学者们。 初学者如何学Java开发? 1.教材的选择 学习Java书籍的选择…

[算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
1 #include<iostream>2 #include<cmath>3 #include<cstdio>4 #include<iomanip>5 using namespace std;6 double h0.1;//步差7 double xi[11]{0};8 double ol_yi[11]{1};9 double gol_yi[11]{1}; 10 double rk_yi[11]{1}; 11 double real_yi[11]{1}; 1…

刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

轻松实现QQ用户接入
1. 申请合作伙伴ID (PID),Key (PKey)2. 发送请求 https://graph.qq.com/oauth2.0/authorize?response_typecode&client_id100000353&redirect_urihttp://www.wodongni.com/loginReturn.aspx redirect_uri:回传URL client_id: 合作伙伴ID (PID) 返回: …

web前端培训之Javascript如何改变数组的长度?
修改数组长度 使用“数组名.length”可以获取或修改数组的长度。数组长度的计算方式为数组中元素的最大索引值加1,示例代码如下。 var arr [a, b, c]; console.log(arr.length); //输出结果:3 在上述代码中,数组中最后一个元素是c,该元素的索…

刻意练习:LeetCode实战 -- Task17. 最长回文子串
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

CvBlobTrackerCC 多目标跟踪算法简析
(1)跟踪器的建立:对新产生的目标,且宽(高)大于5时,建立跟踪器 (2)Kalman滤波:用Kalman滤波器对目标当前的方位、大小做出预测 目标特征矢量采用(x, y, dx, dy…

linux基础学习(二)
------------------------------------------------------------------------------------------------------------------------------------------------0.真机远程管理虚拟机telnet 明文传输 tcp 23ssh 加密传输 tcp 22ssh -X root172.25.0.11 //真机远程管理 ser…

ui设计培训需要什么基础?如何入门学习?
UI设计是一种直观面向用户的一个技术岗位,在互联网公司,UI设计岗位是不可或缺的,那么对于零基础想要学习UI设计的同学来说,ui设计培训需要什么基础?如何入门学习呢?我们来看看下面的详细介绍。 ui设计培训需要什么基础…

SQL Server日志清除的两种方法 .
在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法…… 方法一 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大。 1、设置数…

刻意练习:LeetCode实战 -- Task18. 正则表达式匹配
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

CentOS7启动图形界面
1.yum groupinstall "GNOME Desktop" -y 2.systemctl get-default 3.systemctl set-default graphical.target 4.systemctl get-default 5.reboot

Java培训学习步骤有哪些
最近几年,有很多学习java技术的同学都有过半途而废的想法,认为java零基础是很难学会的,其实出现这样的问题,最主要的原因就是学习方法有问题,下面小编整理的Java培训学习步骤,希望能够帮助大家更有效的学习…

extjs 4 tab panel得strip在IE下右偏解决办法
这是受 align"center" 影响造成的转载于:https://www.cnblogs.com/rav009/archive/2011/12/31/5131240.html

Vbox共享文件夹不显示了
博主之前装的虚拟机没啥问题,按部就班,打开“我的电脑”可以看到主机上的共享文件夹,最近重装了一波,各种问题就来了,包括共享文件夹设置好后,看不见了。 介绍比较麻烦的方案,就是打开“我的电脑…

刻意练习:LeetCode实战 -- Task19. 相同的树
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

找Java培训机构需要注意那些
java技术在互联网行业已经是众所周知的一个编程热门技术,市面上也出现了很多java培训机构,那么想要找到一个适合自己且比较专业的java培训机构应该注意哪些呢?下面小编就为大家详细的介绍一下找Java培训机构需要注意那些? 找Java培训机构需要…

字符串的最大相似匹配
字符串的最大相似匹配计划中,kmp完后,本篇继续。。。转载于:https://www.cnblogs.com/springmvc-hibernate/archive/2011/12/31/2484048.html

刻意练习:LeetCode实战 -- Task20. 对称二叉树
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

洛谷 P1598 垂直柱状图【字符串+模拟】
P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。 输入输出格式 输入格式&…

java开发培训中消息中间件的优势有哪些
系统解耦 交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。 提高系统响应时间 例如原来的一套逻辑,完成支付可能涉及先修改订单状态、计算会员积分、通知物流配送几个逻辑才能完成;通过MQ 架构设计&…

UIView 的 autoresizingMask 属性 详解。
在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高。 enum { UIViewAutoresizingNone 0, UIViewAutoresizingFle…

刻意练习:LeetCode实战 -- Task21. 二叉树的最大深度
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了…

spring中@value注解需要注意
转自:https://blog.csdn.net/qiuhan/article/details/47089329 首先,value需要参数,这里参数可以是两种形式:Value("#{configProperties[t1.msgname]}")或者Value("${t1.msgname}"); 其次…

学Java需要用到的软件快收藏!
java编程语言学起来是比较繁琐的,很多java工程师不管是工作还是学习,都会用到一些辅助工具,对于想要学习java技术的人来说,利用java辅助软件学习会比较更有效率,下面小编就为大家一一整理一下学Java需要用到的软件有哪…