leetcode--无重复字符的最长子串--python

news/2024/7/8 6:13:16

文章目录

  • 题目
    • 题目详情
    • 示例
  • 解题代码
    • 思路
    • 代码
    • 运行结果
    • 最佳方案

题目

题目详情

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

解题代码

思路

  1. 如果需要查找到最长的子串,那么久需要记录子串的位置,值,以及长度。
  2. 那么我们直接用到字典,字典可以记录子串的位置,以及值
  3. 如abcabcd,字典中会存下a,b,c分别的值和位置,后面遇到的时候会更新他们新的位置,以便d能够以连续的位置存下。

代码


class Solution:def lengthOfLongestSubstring(self,s):dic = {}i , length = 0 , 0for j in range(len(s)):if s[j] in dic:i = max(dic[s[j]] , i)   #最长子串的初始位置length = max(length,j-i+1)   #求最长子串的长度dic[s[j]] = j + 1            #最长子串的值和位置return length

运行结果

在这里插入图片描述

最佳方案

用时64ms的最快的一个解决方案:


class Solution:def lengthOfLongestSubstring(self, s: 'str') -> 'int':start = best = 0checked = {}for i in range(0, len(s)):if s[i] in checked and checked[s[i]] >= start:start = checked[s[i]] + 1else:if i+1-start > best:best = i+1-startchecked[s[i]] = ireturn best

http://lihuaxi.xjx100.cn/news/242934.html

相关文章

简析 .NET Core 构成体系

简析 .NET Core 构成体系 Roslyn 编译器RyuJIT 编译器CoreCLR & CoreRTCoreFX(.NET Core Libraries).NET Core 代码开发、部署、运行过程总结前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.N…

rsyslog的配置文件使用方法

参考地址: http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html rsyslog消息模板的定义规则 "%msg:1:2%" : 》读取从pos从1到2的数据"%msg:::lowercase%" : 》将整个消息转换为小写"%msg:10:$%" : 》截取pos…

jQuery元素内容操作的方法有多少种?

jQuery中操作元素内容的方法,主要包括html()方法、text()方法和val()方法。html()方法用于获取或设置元素的HTML内容,text()方法用于获取或设置元素的文本内容,val()方法用来获取或设置表单元素的value值。具体使用说明如表1所示。 表1 元素内…

leetcode--盛最多水的容器--python

文章目录题目题目详情说明示例解题代码思路代码运行结果最佳方案题目 题目详情 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (…

引用与传递——内存分析

程序1: class Demo{int temp 30 ; // 此处为了方便,属性暂时不封装 }; public class RefDemo01{public static void main(String args[]){Demo d1 new Demo() ; // 实例化Demo对象,实例化之后里面的temp30 d1.temp 50 ; // 修改temp属性…

显示界面的普通仓库

实际脚本如下 procedure xianshi_PTCK(Npc: TNormNpc; Player: TPlayObject);procedure CWPRPTCK_QWP(Npc: TNormNpc; Player: TPlayObject; Args: TArgs); beginplayer.TakebackStorageItem(Args.Int[0]);cangku.xianshi_PTCK(npc,player); end; procedure xianshi_PTCK(Np…

女生参加web前端培训可以吗

​ 近几年,web前端被视为互联网行业最热门编程语言技术之一,越来越多的人开始想要学习web前端技术,其中不乏有一些女性学习,那么很多人就要问了,女生参加web前端培训可以吗?我们来看看下面的详细介绍吧。 ​  女生参…

校园ACM--总结

文章目录题目1--字母矩阵题目详情示例解题代码思路代码运行结果题目2--二进制反转题目详情示例解题代码思路代码运行结果体会题目1–字母矩阵 题目详情 n阶字母矩阵是由n*n的英文小写字母组成的方阵,满足: 每一条副对角线上的字母相同 不同对角线上的…