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. 利用ShowDoc自动生成api接口文档

      最近在做新项目,感觉写完一个接口 还要去再写一遍api文档 挺浪费时间的,所以借用ShowDoc的api开放功能 自动生成api文档. 首先 去 https://www.showdoc.cc/ 注册一 ...

    2. JAVA设计模式-动态代理(Proxy)源码分析

      在文章:JAVA设计模式-动态代理(Proxy)示例及说明中,为动态代理设计模式举了一个小小的例子,那么这篇文章就来分析一下源码的实现. 一,Proxy.newProxyInstance方法 @Cal ...

    3. koa和exprsss区别

      koa和exprsss区别 koa没有内置中间件 express有几个内置的中间件,如express.static()//加载静态资源 koa不再有req,res请求,它是封装在context里面 c ...

    4. Spring GetBean流程

       第一节讲解Spring启动的时候说到,Spring内部先解析了所有的配置,加载所有的Bean定义后,再根据需要对Bean进行实例化和初始化.除开Spring自己主动新建的对象,第一次根据Bean定义 ...

    5. Ocelot自定义管道中间件

      Ocelot是啥就不介绍了哈,网关大家都知道,如果大家看过源码会发现其核心就是由一个个的管道中间件组成的,当然这也是Net Core的亮点之一.一个请求到来,会按照中间件的注册顺序进行处理,今天的问题 ...

    6. 一个企图用来进行前端交流的qq群

      我建了一个企图用来进行前端交流的qq群! 希望各位前端开发攻城狮们加入! 大佬.小白都欢迎! 禁广告党! 只是想有一个纯净的环境去讨论一下大家遇到的问题和行业前景之类的话题. 661270378 期待 ...

    7. Java 学习笔记之 线程sleep方法

      线程sleep方法: 单主线程使用sleep: Main线程差了2000毫秒. public class MainSleepThread extends Thread{ @Override publi ...

    8. js实现烟花效果

      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

    9. 设计一个A表数据抽取到B表的抽取过程

      原题如下: 解题代码如下: table1类: @Data @NoArgsConstructor @AllArgsConstructor public class table1{ private Str ...

    10. 基于Docker和Golang搭建Web服务器

      1 场景描述 基于centos7的docker镜像搭建golang开发环境 在docker容器内,使用golang实现一个Web服务器 启动docker容器,并在容器内启动Web服务器 我购买了一个最 ...