这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求“一行的浪漫”。

题目

题解

简单解释一下题目,给定一个字符串s,从中找到一个子串其中没有字母重复且该子串每个元素在原始字符串也是顺序连接的(也就是abc不是abbc的合适子串),输出最长的子串的长度即可。本题难度为Medium。

代码

这题的解题思路由不少,我是参考了一个hashmap的解法做的,它的基本原理是不断向后遍历字符串的字符序列,一旦该字符重复即更新起始点(依靠维护字典一个记录字典),否则一直向后,不断更新最大长度。这里具体的实现参考自Discuss的一个方法,使用了Python3.8支持的赋值表达式来做到单行传递。

from functools import reduceclass Solution:def lengthOfLongestSubstring(self, s: str) -> int:return reduce(lambda a, b: (r := max(a[0], a[2].get(b[1], 0)), max(a[1], b[0] - r + 1), {**a[2], b[1]: b[0] + 1}), enumerate(s), (0, 0, {}))[1]

其中就是利用reduce函数不断取连续的两个元素遍历,当然上述代码理解是有难度的,下面是拆开的可理解版本。

def fn(a, b):"""a: the last elementb: the next element"""start, rst, help = ai, c = bstart = max(start, help.get(c, 0))rst = max(rst, i - start + 1)help[c] = i + 1return start, rst, helpclass Solution:def lengthOfLongestSubstring(self, s: str) -> int:return reduce(fn, enumerate(s), (0, 0, {}))[1]

提交的反馈如下。

0003-Longest Substring Without Repeating Characters(无重复字符的最长子串)相关推荐

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

    网址:https://leetcode.com/problems/longest-substring-without-repeating-characters/ 显然采用sliding window滑 ...

  2. leetcode算法—无重复字符的最长子串 Longest Substring Without Repeating Characters

    关注微信公众号:CodingTechWork,一起学习进步. 题目 Longest Substring Without Repeating Characters: Given a string, fi ...

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

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

  4. LeetCode03:无重复字符的最长子串

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

  5. (LeetCode刷题)Day03 无重复字符的最长子串

    无重复字符的最长子串 [3. Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest ...

  6. 大二菜鸟———无重复字符的最长子串

    这是一枚大二菜鸟的成长反思博客   终于忍不住,在这六月将之的一天开始写起了博客.数据结构计算机算法杂七杂八学了一堆但是都只是浅尝,觉得还是要写博客反刍学习到的知识.   感谢大佬 @Java3y 的 ...

  7. 算法-------无重复字符的最长子串(Java版)

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

  8. leetcode题库:3.无重复字符的最长子串

    题目描述: /**  *题目:无重复字符的最长子串  *  给定一个字符串,找出不含有重复字符的最长子串的长度.  *  *示例:  *  给定 "abcabcbb" ,没有重复字 ...

  9. 【leetcode】力扣刷题(3):无重复字符的最长子串(go语言)

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

最新文章

  1. 如何模拟超过 5 万的并发用户
  2. FCES2021|一起来探讨“开源文化与计算机教育”,7月16日常州见
  3. CSS Specificity--CSS特性、权重、优先级---CSS specificity规则、
  4. 实验:3*3卷积核10分类9*9图片卷积核数量最优值
  5. 参会全攻略 | 倒计时 7 天!30+ 位重量级嘉宾“聊”什么?
  6. 求两个数组中不同的元素
  7. Nginx+Tomcat+Memcached集群 【测试成功】
  8. ios 6.1中 Release问题
  9. [设计模式] - Singleton单例模式
  10. HTML基本语法九 会移动的文字
  11. 计算机组成原理 陈泽,计算机组成原理 课程设计计算机组成原理 课程设计.doc...
  12. tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
  13. DBCS和UCS编码相关
  14. ZOJ 3204 Connect them
  15. 【PAT】敲笨钟 (20 分)
  16. C语言学习一些指针随笔记
  17. 安卓手机与苹果手机安装包的区别
  18. 通往架构师之路系列之Java设计模式(二)工厂方法模式
  19. 高德地图POI分类查询
  20. 实践报告抽象类java_java抽象类不能实例化实践是检验真理的唯一标准

热门文章

  1. 初步认识Volatile-MESI优化带来的可见性问题
  2. Redis存储(实现)原理
  3. 创建工程并测试RedisTemplate
  4. Zookeeper的节点操作
  5. 局部变量-不同函数内的同名局部变量
  6. SpringBoot_入门-Spring Boot简介
  7. Zookeeper_watch机制核心讲解
  8. JUnit 5 常用注解与方法
  9. 210326阶段三人脸识别
  10. 200922阶段一C++关联容器map