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

Leetcode 3 Longest Substring Without Repeating Characters

题意

给定一个字符串,求出最长的无重复字符的子串

题目链接

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

题解

可以用滑动窗口来解决问题,因为在这道题中窗口的左端点不会向左回退

滑动窗口模板

int l = 0;
int r = 0;
while( r < 滑动窗口的右端点) {
	更新窗口元素(一般跟r有关);
	r++;
	while( 窗口中的元素不满足条件){
		更新窗口(一般跟l有关);
		 l++;
	}
}
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int l = 0;
        int r = 0;
        unordered_map<char, int> mp;
        int ret = 0;
        while(r < s.size()) {
            mp[s[r]]++;
            r++;
            while( mp[s[r-1]] > 1) {
                mp[s[l]]--;
                l++;
            }
            ret = max(ret, r - l);
        }
        return ret;
    }
};

这里需要注意的是由于r++在前面,而我们判断的时候是当前的窗口的最后一个字符是否出现了不止一次,当前的数组下标是r-1, 而且计算长度的时候正常是r-l+1,但由于少了r先++了,计算的时候应该用r-l
事件复杂度: O ( n ) O(n) O(n) n为字符串的长度
空间复杂度: O ( n ) O(n) O(n) 需要存储一个map,字符和个数的hashmap

相关文章:

  • Vue Router工作原理探究
  • Python OCR文本识别详细步骤及代码示例
  • 工业相机选型
  • docker部署canal-server
  • 【原创】使用ElasticSearch存储向量实现大模型RAG
  • Elasticsearch8.17 集群常见问题排查与解决
  • linux:环境变量,进程地址空间
  • DoFoto AI(美颜修图·高质量照片)Ver.1.210.53 高级版.apk
  • 制造业数字化转型之工业级远程控制方案选型指南
  • 万字长文详解|蚂蚁数据湖深度探索与业务应用实践
  • 卫宁健康学习——门诊挂号收费管理系统
  • 英伟达消费级RTX显卡配置表
  • 适合用户快速开发项目的PHP框架有哪些?
  • 【测试报告】抽奖系统
  • C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践
  • maven在windows系统上的详细安装和配置
  • 【入门初级篇】报表基础操作与功能介绍
  • C++中函数模板与类模板的简单使用
  • STC89C52单片机学习——第26节: [11-2]蜂鸣器播放音乐
  • 谈谈 CSS 中z - index属性的作用及在什么情况下会失效。
  • 三九手机网手机响应式网站模版/seo引擎优化外包
  • 做网站一般费用多少/nba最新消息新闻
  • 云桥在线客服/吉安seo网站快速排名
  • Java电商网站开发服务端/bt蚂蚁磁力
  • 改行做网站/app接入广告变现
  • 新闻网站建设合同/北京网站制作设计