力扣3:无重复字符的最长子串

力扣3:无重复字符的最长子串

  • 题目
  • 思路
  • 代码

题目

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

思路

这道题的思路其实是很简单的,最后我们需要得到子串的长度所以我们可以定义两个变量即子串的左边界和右边界这样有了左右边界就等于有了子串。然后我们从子串的起始位置开始移动右边界,每次移动前都要判断当前子串中是否有重复的字符如果有我们必须移动左边界直到移动到这个重复的字符后。
思路就是这样个思路,那么问题主要就是如何进行判断子串里是否有重复字符。其实也很简单我们使用哈希表即可。

代码

class Solution {
public:int lengthOfLongestSubstring(string s) {int n = s.size();if (n <= 1) {return n;}int res = 0;// 子串的左边界int left = 0;// 子串的有边界int right = 0;// 使用哈希表来检查是否有重复的字符unordered_set<char> us;for (right = 0; right < n; right++) {char ch = s[right];// 如果在哈希表里有了这个字符while (left <= right && us.count(ch)) {// 就从哈希表中删除左边界的字符// 并且++左边界直到哈希表中不存在ch字符us.erase(s[left]);left++;}us.insert(ch);res = max(res, right - left + 1);}return res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93529.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git登录配置的详细方法

Git登录绑定主要涉及配置用户信息和设置身份验证。以下是详细的配置方法&#xff1a; 1. 配置基本用户信息 # 全局配置用户名和邮箱 git config --global user.name "你的用户名" git config --global user.email "你的邮箱example.com"# 或者为单个仓库配…

测试工程师的AI转型指南:从工具使用到测试策略重构

测试工程师的AI转型指南&#xff1a;从工具使用到测试策略重构 测试工程师正站在职业转型的十字路口。当GitHub Copilot能自动生成测试用例&#xff0c;AI性能工具能预测系统瓶颈&#xff0c;传统“手动执行用例、人工分析结果”的工作模式正被颠覆。某互联网公司测试团队的调研…

3D打印——给开发板做外壳

3D打印——给开发板做外壳前言一、建立开发板3D模型根据开发板尺寸绘制草图绘制PCB草图&#xff08;手动&#xff09;绘制PCB草图&#xff08;导入&#xff09;拉伸PCB板下载零件3D模型装配零件二、建立外壳3D模型盒子盖子&#xff08;卡扣&#xff09;最终效果三、问题记录前言…

Spring AI架构分析

Spring AISpring AI开发框架提供对接应用与AI模型的集成开发能力&#xff0c;让开发者更加容易地开发智能体以及其他生成式人工智能的应用&#xff1a;模型&#xff08;Model&#xff09;AI模型是算法与数据的集合&#xff0c;用于处理信息以及生成信息&#xff0c;主要AI模型的…

Javar如何用RabbitMQ订单超时处理

RabbitMQ 订单超时处理方案 使用 RabbitMQ 的 TTL 死信队列&#xff08;DLX&#xff09; RabbitMQ 的 TTL&#xff08;Time-To-Live&#xff09; 和 死信队列&#xff08;Dead Letter Exchange&#xff09; 是处理订单超时的常见方案。核心思路是设置消息的过期时间&#xff0…

记录一下 StarRocks 点查的 Profile Metrics

背景 Starrocks 3.5 补充两个点查的 profile 一个是没有开启点查的情况&#xff0c;也就是SET enable_short_circuit false; 一个是开启点查的情况&#xff0c;也就是SET enable_short_circuit true; 其中建表语句如下&#xff1a; CREATE TABLE ac_account (id bigint(20) …

react echarts图表监听窗口变化window.addEventListener(‘resize’)与ResizeObserver()

发生问题场景 系统页面使用tabs标签页,当有多个组件&#xff0c;有使用eCharts图表的页面时&#xff0c;其中的一个页面或其他页面使用了F11的页面全屏&#xff0c;关闭全屏后图表会收缩起来(注:固定eCharts的width、height 的参数值是无影响&#xff0c;按照固定参数大小展示)…

Leaflet赋能:WebGIS视角下的省域区县天气可视化实战攻略

目录 前言 一、空间数据基础 1、省域空间检索 2、区县天气信息检索 二、天气数据简介 1、省域天气数据获取 2、区县名称不一致 三、SpringBoot后台实现 1、Java后台天气数据查询 2、控制层实现 四、WebGIS前端实现 1、气温颜色及图例初始化 2、气温数据展示实现 五…

《SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents》论文精读笔记

前言 论文链接&#xff1a;[2401.10935] SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents SeeClick是一种只依赖截图就能执行自动化任务的方法。 在这篇论文中&#xff0c;还提出了ScreenSpot数据集&#xff0c;涵盖移动端、桌面和Web环境的真实benchma…

校园综合数据分析可视化大屏 -Vue纯前端静态页面项目

最近一直在学习用vue来制作 一些 大屏报表的网站&#xff0c;今天就来分享一个我最近做的一个 关于校园综合数据分析可视化大屏的网站。 使用的技术是vue2 element-uiVue2&#xff1a;Element-UI&#xff1a;ECharts&#xff1a;Node版本 16.20 安装依赖&#xff1a;n…

【adb端口5555】烽火hg680-gy_烽火hg680-gc安卓9线刷烧录包 解决用一段时间就提示升级的问题

烽火hg680-gy_烽火hg680-gc安卓9线刷烧录包 解决提示升级的问题本固件可用于那些adb打不开或无法用U盘成功刷机的盒子&#xff1b;本固件需要准备一个TTL线哦&#xff1b;CH340型号的 可以网上自购&#xff1b;TTL链接点 参考下图&#xff1a;其他也没有特别需要说明了的&#…

大模型应用发展与Agent前沿技术趋势(中)

大模型与Agent结合的深度技术架构 分层式Agent架构设计 随着大模型规模的不断增长&#xff0c;传统的Agent实现方式已难以满足高性能、高可扩展性的需求。现代大模型Agent系统通常采用分层式架构设计&#xff0c;将复杂的决策过程分解为多个功能模块&#xff0c;每个模块负责特…

Python可视化工具-Bokeh:动态显示数据

目录 概述 1 认识Bokeh 1.1 Bokeh介绍 1.2 安装Bokeh 1.3 范例介绍 2 Bokeh的应用 2.1 Bokeh应用的框架结构 2.2 实时性数据核心原理 3 具体案例 3.1 代码实现 3.2 部署和运行 概述 Bokeh是一个用于创建交互式可视化的Python库&#xff0c;特别适合在Web浏览器中展示…

Elasticsearch「kNN Retriever」把向量检索装进一条 \_search 管线

1. kNN retriever 是什么&#xff1f; kNN retriever 是 Retriever 框架中的首阶段召回器&#xff0c;负责对一个向量字段做近邻搜索&#xff0c;返回 Top-K 文档。相比早期的 knn 顶级语法&#xff0c;Retriever 让我们能在一个请求里组合多种策略&#xff08;如 RRF/Rescorer…

第四天~在CANFD或CAN2.0的ARXML文件中实现Multiplexor多路复用信号实战

【ARXML专题】-解锁CAN信号超能力:Multiplexor多路复用技术深度解析 "当你的CAN帧需要传输100种信号却只有64字节时,就像试图用行李箱装下一整个衣橱——Multiplexor就是你的真空压缩袋" 信号拥堵时代的救世主 现代豪华汽车中,单个ECU可能需处理500+信号,而传统…

JavaScript 基础入门:从零开始学 JS

一、JavaScript 简介JavaScript&#xff08;简称 JS&#xff09;是一种高级的、解释型的编程语言&#xff0c;由 Netscape 公司的 Brendan Eich 在 1995 年开发&#xff0c;最初命名为 LiveScript&#xff0c;后因与 Java 的合作关系而改名为 JavaScript。作为 Web 开发的三大核…

pytest中使用loguru的问题及解决

引语 上一篇文章,我们向大家推荐了python语言的一个第三方日志库loguru,使用非常简单且功能完备。 但对于我们做自动化测试,经常使用 pytest 框架的小伙伴来说,却有点小问题。就是 Pytest 内建的日志捕获机制是在标准库 logging 的基础上进行优化过的。 这样我们在使用 p…

Qt异步编程:QFuture与QPromise深度解析

在现代GUI应用中&#xff0c;异步操作是保证界面流畅性的关键。本文将深入探讨Qt框架中强大的异步工具——QFuture和QPromise&#xff0c;揭示它们如何简化多线程编程并提升应用性能。 为什么需要QFuture/QPromise&#xff1f; 在Qt开发中&#xff0c;我们经常面临这样的挑战&a…

基于Python的电影评论数据分析系统 Python+Django+Vue.js

本文项目编号 25008 &#xff0c;文末自助获取源码 \color{red}{25008&#xff0c;文末自助获取源码} 25008&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 用户功能1.2 管理员功能 二、系统录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状 六、…

数据结构:在二叉搜索树中插入元素(Insert in a BST)

目录 插入的本质是什么&#xff1f; 如何寻找“合法”的位置&#xff1f;—— 模拟查找过程 递归插入&#xff08;Recursive Insert&#xff09;—— 优雅的实现 代码逐步完善 总结 上一节我们从第一性原理搞清楚了二叉搜索树&#xff08;BST&#xff09;是什么&#xff0…