当前位置: 首页 > news >正文

每日一练 | Day 4

LCP 40. 心算挑战

题目链接

https://leetcode.cn/problems/longest-substring-without-repeating-characters/

相关算法

哈希表、字符串、滑动窗口

题目描述

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

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

解题思路

本题要求找出不含有重复字符的子串,然后求出其中最长的的长度,因此,我们可以用滑动窗口法,即维护一个双指针,使得左右指针范围内的所有数组元素都是唯一的。而要保证唯一性,我们可以这样做,使用一个列表存储左右指针范围内的所有元素,当右指针向右移动时,如果指针指向的元素不在列表内,就说明当前窗口符合要求,因此可以考虑更新结果。当出现重复元素时,移动左指针,同时把因为左指针移动变到窗口外的元素移除列表即可。
在本题里面,为了提高列表删除的效率,可以使用哈希的存储结构,此处 java 使用 HashSet 比较合适

完整代码

class Solution {public int lengthOfLongestSubstring(String s) {HashSet<Character> set = new HashSet<>();int left = 0, right = 0;int ans = 0;while (right < s.length()) {if (!set.contains(s.charAt(right))) {set.add(s.charAt(right));right++;ans = Math.max(ans, right - left);} else {set.remove(s.charAt(left));left++;}}return ans;}
}
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 逆向API接口加解密技术解析归纳
  • sais复杂推理能力评估笔记(一):baseline简介
  • 《亿级流量系统架构设计与实战》第二章 通用的高并发架构设计
  • jmeter 重试机制
  • 抽象代数精解【5】
  • 基于配置实现RoaringBitMap的交、差、并集处理
  • JavaSE第11篇:设计模式
  • Servlet(2)
  • C语言 | Leetcode C语言题解之第321题拼接最大数
  • 免费自动化AI视频剪辑工具
  • 深入解析Apache Flink中的事件时间与处理时间
  • 使用TensorRT对YOLOv8模型进行加速推理
  • 解决方案:Cannot write to ‘torch-2.0.1+cu118-cp310-cp310-linux_x86_64.whl.3’ (成功).
  • 我的256天创作纪念日
  • 《学会 SpringMVC 系列 · 剖析初始化》
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Angular Elements 及其运作原理
  • Angular 响应式表单 基础例子
  • C++11: atomic 头文件
  • Facebook AccountKit 接入的坑点
  • github从入门到放弃(1)
  • Js基础知识(一) - 变量
  • learning koa2.x
  • Leetcode 27 Remove Element
  • Linux后台研发超实用命令总结
  • Magento 1.x 中文订单打印乱码
  • Octave 入门
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue学习系列(二)vue-cli
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 搞机器学习要哪些技能
  • 面试遇到的一些题
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信小程序:实现悬浮返回和分享按钮
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 用 Swift 编写面向协议的视图
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 从如何停掉 Promise 链说起
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (2)nginx 安装、启停
  • (2)空速传感器
  • (3)nginx 配置(nginx.conf)
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)计算机毕业设计大学生兼职系统
  • (十)Flink Table API 和 SQL 基本概念
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)菜鸟学数据库(三)——存储过程
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)OpenStack Hacker养成指南
  • .NET Core 发展历程和版本迭代
  • .net 流——流的类型体系简单介绍