当前位置:首页 » Python程序 » Python3 无反复字符的最多子串的完成

Python3 无反复字符的最多子串的完成

285°c 2021年04月20日 08:12 Python程序 0条评论
  移步手机端

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章

题型:

给出一个字符串,你要找到在其中不带有反复字符的 最多子串 的长度。

示例:

示例 1:
键入: “abcabcbb”
输出: 3
表述: 由于无反复字符的最多子串是 “abc”,因此其长度为 3。

示例 2:
键入: “bbbbb”
输出: 1
表述: 由于无反复字符的最多子串是 “b”,因此其长度为 1。

示例 3:
键入: “pwwkew”
输出: 3
表述: 由于无反复字符的最多子串是 “wke”,因此其长度为 3。
一定要注意,你的答案务必是 子串 的长度,“pwke” 是一个子序列,并不是子串。

构思:

这道题会很当然的想起暴力行为打法,便是按位增长先后查验子串是不是反复,并记录下来现阶段较大 的子串长度,假如反复就从下一位数据库索引处的字符逐渐再次查验。下边是编码完成:

class Solution:
 def lengthOfLongestSubstring(self, s: str) -> int:
 # 最多子串的长度
 max_len = 0
 # 储放字符的词典
 char_dict = {}
 index = 0
 while s[index:].__len__() >= max_len:
  # 当今最多子串长度
  current_len = 0
  for item in s[index:]:
  old_index = char_dict.get(item)
  if old_index is not None:
   index = old_index   1
   char_dict.clear()
   break
  char_dict[item] = index
  index  = 1
  current_len  = 1
  if current_len > max_len:
  max_len = current_len
 return max_len

逐渐仅仅想跑通,想不到超过了时间限制。看上去编码看起来是有点儿唠叨,可是构思应该是没有问题的,大家或是从解析xml的视角来提升。

提升:

在上面的编码中,当碰到反复字符时,解析xml的起止点就往后面挪一位,但实际上2个反复字符中间的一部分是不容易反复的,例如字符串fbacdadfeed,在第一次从 f 逐渐解析xml碰到反复字符即第二个 a 的情况下,下一次解析xml不应该从 b 逐渐,只是应当过去一个反复字符的后一个字符即 c 逐渐。

明确观念,并数次提升后的编码以下:

class Solution:
  def lengthOfLongestSubstring(self, s: str) -> int:
    char_dict = {}
    start, end, max_len = -1, 0, 0
    str_len = s.__len__()
    while end < str_len:
      char = s[end]
      if char in char_dict:
        old_index = char_dict[char]
        if old_index > start:
         start = old_index 
      diff = end -start
      if diff > max_len:
        max_len = diff 
      char_dict[char] = end
      end  = 1
    return max_len;

这儿应用了内嵌的.__len__()方式来获得字符串长度而不是len(),而且应用了好几个看起来多此一举的临时性自变量来储存值,例如char和diff,全是为了更好地省时省力,蚊虫小,但是肉嘛。

結果也是 ok 的:

Python3 无反复字符的最多子串的完成第1张-python学习平台_Python基础教程-雨凡教育

之上便是文中的所有内容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多的适用大家。

欢迎阅读本文,希望本文对您有所帮助!

本文链接:http://www.cqrxzs.com/3846.html

版权声明:本文为原创文章,版权归 雨凡教育 所有,欢迎分享本文,转载请保留出处!

百度推荐获取地址:http://tuijian.baidu.com/,百度推荐可能会有一些未知的问题,使用中有任何问题请直接联系百度官方客服!

评论(0) 赞助本站

发表评论:


【顶】 【踩】 【好】 【懵】 【赞】 【表情】

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

推荐阅读
04月21日

Python应用tkinter模块完成推箱子游戏

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 4879次

前段时间用C语言做了个字符版的推箱子,着实是比较简陋。正好最近用到了Python,然后想着用Python做一个图形界面的推箱子。这回可没有C那么简单,首先Python的图形界面我是没怎么用过,在网上找了一大堆教材,最后选择了tkinter,没什么特别的原因,只是因为网上说的多。 接下来就来和大家分享一下,主要分享两点,第一就是这个程序的实现过程,第二点就是我在编写过程中的一些思考。 一、介绍 开发语言:Python 3.7 开发工具:PyCharm 2019.2.4 日期:2019年10月2...

04月20日

python内置函数sorted()用法深入分析

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 340次

文中案例叙述了python内置函数sorted()用法。共享给大伙儿供大伙儿参照,实际以下: 列表目标出示了sort()方式适用原地排序,而内置函数sorted()不兼容原地实际操作仅仅回到新的列表,并不对原列表开展一切改动。sorted()方式能够 对列表、元组、词典、range目标等开展排序。列表的sort()方式和内置函数sorted()都适用key主要参数完成繁杂排序规定。 #应用key来特定排序根据,先按名字降序排序,名字同样的按年纪降序排序 >>> person...

04月20日

python生成器推导式用法简易示例

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 343次

文中案例叙述了python生成器推导式用法。共享给大伙儿供大伙儿参照,实际以下: 1.生成器推导式是继列表推导式后的有一中python推导式,他比列表推导式速率更快,占有的运行内存也越来越少。 2.应用生成器目标时,能够 依据必须将他转换为目录或是元组,还可以是哟个生成器对像__next__()方式或内嵌涵数next()开展遍历,其具备可塑性求值的特性,开展一次遍历后便不可以再度方向內部原素,即浏览一次立刻清除生成器目标 >>> g = ((i 2)**2 for i in...

04月20日

Django完成文件网页上传

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 316次

文中案例为大伙儿共享了Django完成文件提交下载的实际编码,供大伙儿参照,主要内容以下 一、django完成文件下载 (1)、后台管理插口 假如从服务器立即将文件途径发送给电脑浏览器,一般文件能够 立即下载,而照片,html,css和pdf格式等文件会立即表明,因此解决方案便是在头文件中让文件流载入电脑硬盘. ①、非常简单的文件下载作用的完成,立即将文件流放进HttpResponse对象就可以 def file_download(request): # do something......

04月20日

应用go在mangodb中开展CRUD操作

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 309次

我还在学习培训go语言表达以前,在对数据库开展CRUD的操作基本上是用java和sql来对mysql数据库开展操作,可是到见习中公司业务全是用的是mangodb,根据一段学习时间后,我有了一些获得。 概述关系型数据库,非关系型数据库 关系型数据库:指选用了关系实体模型来机构数据信息的数据库。 关系实体模型指的便是二维表格实体模型,而一个关系型数据库便是由二维表以及中间的联络所构成的一个数据组织 非关系型数据库 非关系型数据库:指非关系型的,分布式系统的,且一般不确保遵照 ACID 标准的数据...

04月20日

ubuntu上安装python的实例方法

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 298次

怎样在ubuntu安装python? python在ubuntu下有几种安装方式: ● 根据ubuntu官方网的apt工具包安装 ● 根据PPA(Personal Package Archive) 的apt工具包安装 ● 根据编译程序python源码安装 根据ubuntu官方网的apt工具包安装 sudo apt-get install python2.7 sudo apt-get install python3.4 安装进行后,可以用下边的指令开展确定 [email protect...

04月20日

Python3 无反复字符的最多子串的完成

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 285次

题型: 给出一个字符串,你要找到在其中不带有反复字符的 最多子串 的长度。 示例: 示例 1: 键入: “abcabcbb” 输出: 3 表述: 由于无反复字符的最多子串是 “abc”,因此其长度为 3。 示例 2: 键入: “bbbbb” 输出: 1 表述: 由于无反复字符的最多子串是 “b”,因此其长度为 1。 示例 3: 键入: “pwwkew” 输出: 3 表述: 由于无反复字符的最多子串是 “wke”,因此其长度为 3。 一定要注意,你的答案务必是 子串 的长度,“pwke...

04月20日

Django完成文件上传和下载功能

发布 : | 分类 : Python程序 | 评论 : 0人 | 浏览 : 291次

文中案例为大伙儿共享了Django下进行文件提交和下载作用的实际编码,供大伙儿参照,具体内容以下 一、文件提交 Views.py def upload(request): if request.method == "POST": # 要求方式为POST时,开展解决 myFile = request.FILES.get("myfile", None) # 获得提交的文件,如果没有文件,则默认设置为None if not myFile: return HttpResponse("no f...

您好,欢迎到访网站!
  查看权限