Leetcode(3)无重复字符的最长子串

[题目表述]:

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

第一种方法:暴力

执行用时:996 ms; 内存消耗:12.9MB 效果:太差

class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
Maxsize=0
res=''
if len(s)==1:Maxsize=1
for i in range(len(s)):
for j in s[i:len(s)]:
if j not in res:res+=j
else:
break
Maxsize=max(Maxsize,len(res))
res=''
return Maxsize

学习

  • 利用一个空串来存储子串

  • for对迭代对象的使用

第二种方法:一个for加切片操作

执行用时:60 ms; 内存消耗:12.1MB 效果:非常好

class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
res = ''
maxlen = 0
for i in s:
if i not in res:
res += i
else:
maxlen = max(maxlen, len(res))
index = res.index(i)
res = res[index + 1:] + i
return max(maxlen, len(res))

学习

  • 算法有点类似于字符串匹配模式算法KMP

  • 出现重复的移动到重复字符的后一个位置,截取之后继续操作

  • 就不用for+for,只需要用一个for,跟改进匹配算法一样的改进方式

  • 字符串可以+= + 这种重载运算符

  • 切片

    • [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串

    • [start:] 从start 提取到结尾

    • [:end] 从开头提取到end - 1

    • [start:end] 从start 提取到end - 1

    • [start

    Leetcode(3)无重复字符的最长子串的更多相关文章

    1. Leetcode(三)无重复字符的最长子串

      3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...

    2. 【LeetCode】无重复字符的最长子串【滑动窗口法】

      给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...

    3. [LeetCode] 3. 无重复字符的最长子串

      题目链接:(https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) 题目描述: 给定一个字符 ...

    4. 【leetcode 3. 无重复字符的最长子串】解题报告

      思路:滑动窗口的思想 方法一:滑动窗口 int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是 ...

    5. LeetCode 3: 无重复字符的最长子串 Longest Substring Without Repeating Characters

      题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Given a string, find the length of the longest substring withou ...

    6. Leetcode——3. 无重复字符的最长子串

      难度: 中等 题目 Given a string, find the length of the longest substring without repeating characters. 给定一 ...

    7. 力扣Leetcode 3. 无重复字符的最长子串

      无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ...

    8. [LeetCode]3. 无重复字符的最长子串(滑动窗口)

      题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc ...

    9. [LeetCode]3.无重复字符的最长子串(Java)

      原题地址: longest-substring-without-repeating-characters/submissions 题目描述: 示例 1: 输入: s = "pwwkew&qu ...

    10. LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)

      题目描述 给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. ...

    随机推荐

    1. 外部服务器使用jedis操作redis数据库

      使用maven获取jedis的包,我本来想去找jedis的jar包的,但是没找到. (maven)     <dependency> <groupId>redis.client ...

    2. Elasticsearch(10) --- 内置分词器、中文分词器

      Elasticsearch(10) --- 内置分词器.中文分词器 这篇博客主要讲:分词器概念.ES内置分词器.ES中文分词器. 一.分词器概念 1.Analysis 和 Analyzer Analy ...

    3. 给idea设置默认使用的maven配置

      一,前言 大家都知道,java开发中最经常使用的开发工具是Maven,最近看新同事在使用idea,我也下载了一个,准备尝试一下. 而maven是非诚方便进行工程管理的,至少管理jar包,是非常方便的, ...

    4. Elastic Static初识(01)

      写在前面 Elastic Static 是指由Elasticsearch,Logstash,Kibana,Beats等组件结合起来而构成的一个数据收集,分析,可视化的一个架构.我们经常听说过的ELK就 ...

    5. Spring 梳理-AOP

      界面应用场景 日志.声明式事务.安全.缓存 AOP功能演化图 图片引用地址:https://www.cnblogs.com/best/p/5679656.html AOP设计模式-代理模式 静态代理: ...

    6. java8 base64使用

      java 1.8中引入了Base64,不在需要引入第三方库就可以使用base64了. 在需要用到base64进行加密解密的时候就可以使用了 String text = "base64 in ...

    7. Android开发——Toolbar常用设置

      本篇笔记用来记录常用的Toolbar设置,如Toolbar颜色设置,显示返回按钮,显示右边三个点按钮 之前Android 使用的ActionBar,Android5.0开始,谷歌官方推荐使用Toolb ...

    8. 记录使用echarts的graph类型绘制流程图全过程(一)-x,y位置的计算

      先说下本次案例业务需求,输入2个节点,获取数据后绘制出2个节点间的路径,之前使用的是网状图,但是网状图的效果不佳,需要转换成流程图的模式: 那么如何在不修改数据的情况下,实现类似效果尼? 看了下ech ...

    9. K8s 从懵圈到熟练 – 集群网络详解

      作者 | 声东 阿里云售后技术专家 导读:阿里云 K8S 集群网络目前有两种方案:一种是 flannel 方案:另外一种是基于 calico 和弹性网卡 eni 的 terway 方案.Terway ...

    10. 浅拷贝&深拷贝的对比

      js中两种数据类型 浅拷贝:拷贝就是拷贝指向对象的指针,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,然而当内存销毁的 ...