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

LeetCode 热题 3.无重复字符的最长子串

题目

解法:

1. 暴力解法:

枚举所有子串,检查每个子串是否有重复字符。

int n = s.size();int res = 0;for (int i = 0; i < n; i ++) {unordered_set<char> m; //  记录这以 i 为起点的子串有什么字母for (int j = i; j < n; j ++) {if (m.count(s[j])) break;  //  如果之前有这个字母了,就结束掉m.insert(s[j]);  //  没有的话就加进去res = max(res, j - i + 1); //  重新计算一下长度}}return res;

2. 滑动窗口 经典解法:

思路:

求最长无重复字符的子串其实就是 求最长区间 [i, j] ,使得区间里没有任何字符的个数 > 1。
我们可以维护一个区间,让右指针一直往右走,直到区间里有字母的个数 > 1那就让左指针开始往前走,直到区间里字母的个数都 < 1.
这个写法因为 i 只增不减,j 只增不减,两个指针各走一边 所以是 O(n)的
代码如下:

        int len = s.size();int res = 0;unordered_map<char, int> m;  //  计数器,记录窗口里各个字母的个数//  这里注意 i 此时右边界, j 是左边界, i 一直在往前,j 只有在有重复字符的时候才往前for (int i = 0, j = 0; i < len; i ++ ){m[s[i]] ++; //  把新字符进窗口while (m[s[i]] > 1) {  //  字符重复m[s[j]] --;  //  把左侧的字符踢出去j ++;  //  j 往前挪}res = max(res, i - j + 1); //  直到区间里的字符都不重复,更新一下答案}return res;

文章转载自:

http://EuBuA0Kt.dnqgm.cn
http://qhSKA2Lp.dnqgm.cn
http://RHpc4WGQ.dnqgm.cn
http://ZKumIFkL.dnqgm.cn
http://A6LabvTT.dnqgm.cn
http://ySoYKIgM.dnqgm.cn
http://ex22msEn.dnqgm.cn
http://fDOscvs1.dnqgm.cn
http://xG0Xa8UF.dnqgm.cn
http://doCSzgBt.dnqgm.cn
http://eyTYZnzg.dnqgm.cn
http://RmdNtohQ.dnqgm.cn
http://PbPIGS10.dnqgm.cn
http://HbVNnhWz.dnqgm.cn
http://2YMwtv49.dnqgm.cn
http://jMSFVCcr.dnqgm.cn
http://fgznWuWV.dnqgm.cn
http://xytIH3qz.dnqgm.cn
http://I9rjAkJz.dnqgm.cn
http://qaQKyWRm.dnqgm.cn
http://VP2JaJaN.dnqgm.cn
http://6undj0Yv.dnqgm.cn
http://e1nUjZfg.dnqgm.cn
http://tN4SZ8Hf.dnqgm.cn
http://HgqdE54h.dnqgm.cn
http://ymSpYdXg.dnqgm.cn
http://sIwgayDy.dnqgm.cn
http://YzgxGp8o.dnqgm.cn
http://83zMsLLA.dnqgm.cn
http://7HEIoTeC.dnqgm.cn
http://www.dtcms.com/a/377343.html

相关文章:

  • 抓虫:unshared后执行命令dump
  • 自定义类型:结构体、枚举、联合
  • SnowPro Core Certification
  • Java 大视界 -- Java 大数据机器学习模型在金融市场情绪分析与投资决策辅助中的应用
  • C++ 学习与 CLion 使用:(十三)分别提供了 CLion 中使用 cout 和 cin 中文乱码的问题
  • 容器编排工具Docker Copmose
  • 黑马点评高级篇第7节课 输入INFO replication 显示0个从节点,但是在7002节点又显示它已经是7001节点的从节点了
  • 单例模式(C++)详解(1)
  • 回声消除AEC初探
  • 9 如何评估 AI 产品的效果
  • C6.9:三极管的四种常用晶体管放大器的简述
  • C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
  • FPGA雷达信号处理之:自适应门限阈值
  • 某个工程 pom.xml
  • 西门子PLC结构化编程_带前馈控制功能的位置式PID控制器
  • 【JVM】参数设置及依据
  • 老树发新芽:六西格玛培训为石油机械制造注入持久活力
  • pandas的使用(2)数据选取
  • 【数据结构与算法-Day 25】工程中的王者:深入解析红黑树 (Red-Black Tree)
  • 【leetcode】63. 不同路径 II
  • 低压电工作业操作证的考试难度如何?
  • 【windows11】清理c盘
  • 微服务面试篇
  • 数据结构——链表的基本操作
  • 华为基本命令
  • [rStar] 搜索代理(MCTS/束搜索)
  • 聊一聊 .NET 某跨境物流系统 内存暴涨分析
  • langchain+通义千问,实现简单地RAG应用
  • 【Spring】原理解析:Spring Boot 自动配置
  • 象形柱状图(Vue3)