博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.无重复字符的最长子串
阅读量:3966 次
发布时间:2019-05-24

本文共 692 字,大约阅读时间需要 2 分钟。

1. 题目描述

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

示例:
在这里插入图片描述

2. 解法

滑动窗口类型。分析,维护两个端点指针,右指针一直往前跑,当没有重复字符时,就将当前字符添加到哈希表中,且对应的value值为1,若有重复字符时,对应的value变成了2,我们就需要将左指针维护的字符从哈希表中删除。

int lengthOfLongestSubstring(string s) {       unordered_map
window; int left = 0, right = 0; int res = 0; while(right < s.size()){ char c = s[right]; // 先加一个元素进去 right++; window[c]++; while(window[c] > 1){ // 判断是否 c 已经存在,若存在,删除最左边的元素 char d = s[left]; left--; window[d]--; // 从哈希表中删除 } res = max(res, right - left); // 每一轮都判断且保存最大值 } return res; }

Note: 一个关于unordered_map的知识

C++中使用方括号 map[key] 访问哈希表中key对应的value,如果value不存在,哈希表会自动创建这个key,并将其value置为0。

转载地址:http://yqwki.baihongyu.com/

你可能感兴趣的文章
[第15课] 统计:标准差
查看>>
[第16课]统计:诸方差公式
查看>>
[第17课] 随机变量介绍
查看>>
[第18课] 概率密度函数
查看>>
Pandas 精萃
查看>>
[第19课] 二项分布1
查看>>
什么是 Pandas?
查看>>
Pandas 如何创建 DataFrame
查看>>
Pandas 查看数据
查看>>
[第20课] 二项分布2
查看>>
感 冒
查看>>
职业瓶颈
查看>>
有些问题不一定要一次完成,有时候可以增加中间步骤
查看>>
Eclipse 常用快捷键
查看>>
DB2 系列文章目录
查看>>
DB2 认证路线图
查看>>
在FedaroCore4下安装DB2 Express-C
查看>>
DB2 目录结构
查看>>
DB2 配置
查看>>
DB2 CHNGPGS_THRES 参数
查看>>