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

【滑动窗口+哈希表/数组记录】Leetcode 3. 无重复字符的最长子串

题目要求

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

子字符串是字符串中连续非空字符序列。

示例 1

输入:s = "abcabcbb"
输出:3
解释:无重复字符的最长子串是 "abc",长度为 3

示例 2

输入:s = "bbbbb"
输出:1
解释:无重复字符的最长子串是 "b",长度为 1

示例 3

输入:s = "pwwkew"
输出:3
解释:无重复字符的最长子串是 "wke",长度为 3。请注意,答案必须是子串的长度,"pwke" 是一个子序列,不是子串。

提示

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

实际应用

文本编辑器中的应用

在文本编辑器中,用户输入文本时,编辑器需要实时检测是否有重复字符,以帮助用户避免输入错误。

数据流分析中的应用

在网络数据流分析中,需要实时检测数据流中的重复数据包,进行数据清洗和去重。

滑动窗口法

使用滑动窗口算法结合哈希表或数组来高效地记录和更新字符的位置,从而快速判断是否出现重复字符。

哈希表记录字符频率

#include <iostream>
#include <unordered_map>
#include <string>using namespace std;int lengthOfLongestSubstring(string s) {unordered_map<char, int> map;int left = 0, right = 0, res = 0;while (right < s.size()) {// 如果当前字符在map中存在,则更新left指针if (map.find(s[right]) != map.end()) {left = max(left, map[s[right]] + 1);}// 更新当前字符的索引map[s[right]] = right;right++;res = max(res, right - left);}return res;
}int main() {string s = "abcabcbb";cout << lengthOfLongestSubstring(s) << endl;return 0;
}

数组记录字符频率

#include <iostream>
#include <vector>
#include <string>using namespace std;int lengthOfLongestSubstring(string s) {vector<int> map(256, -1);int left = 0, right = 0, res = 0;while (right < s.size()) {// 如果字符重复,更新左边界if (map[s[right]] != -1) {left = max(left, map[s[right]] + 1);}// 更新字符的位置map[s[right]] = right;right++;res = max(res, right - left);    }return res;
}int main() {string s = "abcabcbb";cout << lengthOfLongestSubstring(s) << endl;return 0;
}

推荐一下

https://github.com/0voice


文章转载自:
http://cheribon.ciuzn.cn
http://chain.ciuzn.cn
http://bordereau.ciuzn.cn
http://breathless.ciuzn.cn
http://butler.ciuzn.cn
http://baptistry.ciuzn.cn
http://axestone.ciuzn.cn
http://chappy.ciuzn.cn
http://charles.ciuzn.cn
http://anomalism.ciuzn.cn
http://cbd.ciuzn.cn
http://captainship.ciuzn.cn
http://bandanna.ciuzn.cn
http://appropriative.ciuzn.cn
http://charitably.ciuzn.cn
http://cageling.ciuzn.cn
http://aquatic.ciuzn.cn
http://carnotite.ciuzn.cn
http://autobiography.ciuzn.cn
http://boutiquier.ciuzn.cn
http://christocentric.ciuzn.cn
http://barely.ciuzn.cn
http://casa.ciuzn.cn
http://chronoscope.ciuzn.cn
http://bimana.ciuzn.cn
http://balconied.ciuzn.cn
http://calcariferous.ciuzn.cn
http://amniotic.ciuzn.cn
http://asphodel.ciuzn.cn
http://beefwood.ciuzn.cn
http://www.dtcms.com/a/155526.html

相关文章:

  • 搜索二叉树-key的搜索模型
  • nc工具!Netcat:TCP/IP瑞士军刀!全参数详细教程!Kali Linux教程!
  • prometheus通过Endpoints自定义grafana的dashboard模块
  • 时序数据库IoTDB在航空航天领域的解决方案
  • 对Mac文字双击或三击鼠标左键没有任何反应
  • Mac 「brew」快速安装MySQL
  • 河道流量监测,雷达流量计赋能水安全智慧守护
  • 4.26 世界知识产权日|CRMEB与您共筑知识产权保护铠甲
  • 【playwright】 page.wait_for_timeout() 和time.sleep()区别
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十七页
  • Spring 与 ActiveMQ 的深度集成实践(一)
  • 告别进度失控:用燃尽图补上甘特图的监控盲区
  • 第100+39步 ChatGPT学习:R语言实现Xgboost SHAP
  • (三) Trae 调试C++ 基本概念
  • 《AI大模型趣味实战》构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
  • 数字人民币杠杆破局预付乱象 XBIT智能合约筑牢资金安全防线
  • 基于Java,SpringBoot,Vue,HTML宠物相亲配对婚恋系统设计
  • 如何实现Android屏幕和音频采集并启动RTSP服务?
  • 【Linux内核设计与实现】第三章——进程管理04
  • 多模态大语言模型(MLLM)- kimi-vl technical report论文阅读
  • UWA DAY 2025 正式启动|十年筑基,驱动游戏未来引擎
  • 临床试验中安全性估计策略与应用
  • 白鲸开源与亚马逊云科技携手推动AI-Ready数据架构创新
  • 企业级智能合同管理解决方案升级报告:道本科技携手DeepSeek打造智能合同管理新标杆
  • 用diffusers库从单文件safetensor加载sdxl模型(离线)
  • UniApp学习笔记
  • Drools+自定义规则库
  • 【蓝桥杯选拔赛真题104】Scratch回文数 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析
  • 算法中的数学:gcd与lcm
  • 力扣-hot100(滑动窗口最大值)