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

[题目表述]:

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

第一种方法:暴力

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

  1. class Solution(object):
  2. def lengthOfLongestSubstring(self, s):
  3. """
  4. :type s: str
  5. :rtype: int
  6. """
  7. Maxsize=0
  8. res=''
  9. if len(s)==1:Maxsize=1
  10. for i in range(len(s)):
  11. for j in s[i:len(s)]:
  12. if j not in res:res+=j
  13. else:
  14. break
  15. Maxsize=max(Maxsize,len(res))
  16. res=''
  17. return Maxsize

学习

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

  • for对迭代对象的使用

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

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

  1. class Solution:
  2. def lengthOfLongestSubstring(self, s):
  3. """
  4. :type s: str
  5. :rtype: int
  6. """
  7. res = ''
  8. maxlen = 0
  9. for i in s:
  10. if i not in res:
  11. res += i
  12. else:
  13. maxlen = max(maxlen, len(res))
  14. index = res.index(i)
  15. res = res[index + 1:] + i
  16. 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. [Linux] linux下vim对于意外退出的文档的再次开启

      转载自博客:https://blog.csdn.net/ljp1919/article/details/48372615 1.对于同一个文件如果上次已经打开,而未关闭的情况下,又打开该文件进行编辑时, ...

    2. uboot学习之uboot-spl的程序流程分析

      uboot-spl的程序流程主要包含下面的几个函数: _start->reset->save_boot_params->cpu_init_crit->lowlevel_init ...

    3. SoapUI接口测试实战

      本次测试的是REST服务,使用的SoapUI破解版,如果担心开源版的会有功能差异,可以参照我之前的博文安装破解版. 博文地址:https://www.cnblogs.com/Sweettesting/ ...

    4. Python-进程相关概念

      名词解释: 进程: 一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位 1. 并行 在某个*时间点*,两件或两件以上的事件(任务)同时执行. 比如说,有三 ...

    5. lcx端口转发

      目录 0x01 正向端口转发 0x02 反向端口转发 0x03 msf正向shell 0x04 msf反向shell 注: 边界机器 win08 192.168.222.175 内网机器 win7 1 ...

    6. spring 定时器知识点

      一.各域说明 字段域 秒 分 时 日 月 星期(7为周六) 年(可选) 取值范围 0-59 0-59 0-23 1-31 1-12或JAN–DEC 1-7或SUN–SAT 1970–2099 可用字符 ...

    7. Flask基础(01)-->Flask框架介绍

      什么是Flask? 说白了,Flask就是一种web框架 在python中常用的框架有 flask django tornado 什么又是web框架呢?  为什么要使用web框架呢? 增强扩展性和稳定 ...

    8. Hibernate教程 ---简单易懂

      1 web内容回顾 (1)javaee三层结构 (2)mvc思想 2 hibernate概述 3 hibernate入门案例 4 hibernate配置文件 5 hibernate的api使用 Hib ...

    9. laravel基础操作手册

      laravel基础操作手册 1.路由配置 测试配置路由: Route::get('/test', 'TestController@index'); 2.控制器书写 3.模型文件 4.增加扩展类文件 L ...

    10. Tomcat源码分析一:编译Tomcat源码

      Tomcat源码分析一:编译Tomcat源码 1 内容介绍 在之前的<Servlet与Tomcat运行示例>一文中,给大家带来如何在Tomcat中部署Servlet应用的相关步骤,本文将就 ...