【LeetCode刷题-滑动窗口】--159.至多包含两个不同字符的最长子串

159.至多包含两个不同字符的最长子串

image-20231117111047622

方法:滑动窗口

定义两个指针left和right作为窗口的边界,将两个指针都设定在位置0,然后向右移动right指针,直到窗口内不超过两个不同的字符,如果某一点我们得到了3个不同的字符,那么需要移动left指针,窗口内最多只能有2个不同的字符。

建立一个哈希表,键是滑动窗口中的所有字符,值是它们最右端的位置,在每一刻,这个哈希表最多只能包含3个元素

class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {int n = s.length();if(n < 3){return n;}//滑动窗口的左右指针int left = 0,right = 0;//定义一个哈希映射,hashMap中的字符->它在滑动窗口中最靠右的位置HashMap<Character,Integer> hashmap = new HashMap<Character,Integer>();int max_len = 2;while(right < n){//当滑动窗口包含小于3个字符hashmap.put(s.charAt(right),right++);//滑动窗口包含3个字符if(hashmap.size() ==3){//删除最左边的字符int del_idx = Collections.min(hashmap.values());  hashmap.remove(s.charAt(del_idx));//删除滑动窗口的左指针left = del_idx + 1;}max_len = Math.max(max_len,right - left);}return max_len;}
}

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

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

相关文章

《许犁庭与柔性世界》第十三章 伊拉斯蒂克

“哈哈哈&#xff0c;居然小脸着地&#xff01;看来桉嘴牛的发射也没那么安全。”若丹姐姐嬉皮笑脸来到她面前&#xff0c;“怎么样&#xff0c;惊险不惊险&#xff0c;刺激不刺激&#xff1f;” 许犁庭脸色发白&#xff0c;身子发虚&#xff0c;只觉得心儿依旧高悬不落&#x…

OpenCV入门6——图像基本变换

文章目录 图像的放大与缩小缩放算法放大 图像的翻转图像的旋转仿射变换之图像平移仿射变换之获取变换矩阵仿射变换之变换矩阵之二OpenCV透视变换 图像的放大与缩小 缩放算法 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(E://pic//4.jpg) # (600, 48…

Pandas的fillna()填充空值

0.摘要 pandas中fillna()方法&#xff0c;能够使用指定的方法填充NA/NaN值。 1.函数详解 函数形式&#xff1a;fillna(valueNone, methodNone, axisNone, inplaceFalse, limitNone, downcastNone, **kwargs) 参数&#xff1a; value&#xff1a;用于填充的空值的值。 met…

时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)

时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM) 目录 时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)预测效果基本介绍程序设计参考资料预测效果 基本介绍 时序预测 | Python实现ConvLSTM卷积长短期记忆神…

atsec at the PCI Community Meeting 2023

atsec participated in the PCI (Payment Card Industry) Security Standards Council 2023 Asia-Pacific Community Meeting held in Kuala Lumpur, Malaysia, on 15 and 16 November and hosted a booth. atsec’s principal consultant Di Li provided a presentation on “…

学习笔记5——对象、直接内存、执行引擎,string

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/192486.html 创建对象的步骤 对象对应的类是否被加载&#xff0c;链接&#xff08;链接到真实的内存地址&#xff09;&#xff0c;初始化&#xff08;类初始化&#xff09;…

回顾——自我监督的 Vision Transformer 学到了什么?

一、说明 在尝试自我监督学习时&#xff0c;主要有两种方法&#xff1a;对比学习&#xff08;CL&#xff09;和掩模图像建模&#xff08;MIM&#xff09;。然而&#xff0c;随着MIM最近受到关注&#xff0c;很多人使用MIM&#xff0c;但他们可能不知道为什么使用它以及何时应该…

ython 的 http.client 和 python-requests 性能差异分析与优化

在Python中&#xff0c;有两个常用的HTTP库&#xff0c;分别是http.client和python-requests。。 社区成员Lukasa提出了一个可能的原因&#xff0c;即python-requests可能没有正确缓存主机名查找。这个问题涉及到了底层的网络操作&#xff0c;因为Python-requests实际上是在ht…

opencv(2): 视频采集和录制

视频采集 相关API VideoCapture()cap.read()&#xff1a; 返回两个值&#xff0c;第一个参数&#xff0c;如果读到frame&#xff0c;返回 True. 第二个参数为相应的图像帧。cap.release() VideoCapture cv2.VideoCapture(0) 0 表示自动检测&#xff0c;如果在笔记本上运行&…

PCL 提取点云边界轮廓-AC方法、平面轮廓

一、概述 PCL点云边界特征检测 &#xff08;附完整代码 C&#xff09;_pcl计算点云特征值_McQueen_LT的博客-CSDN博客 在点云的边界特征检测&#xff08;网格模型的边界特征检测已经是一个确定性问题了&#xff0c;见 网格模型边界检测&#xff09;方面&#xff0c;PCL中有一…

「Verilog学习笔记」用3-8译码器实现全减器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 首先列出3-8译码器和全减器的真值表 全减器真值表如下 3-8译码器真值表如下 timescale 1ns/1nsmodule decoder_38(input E ,input A0 …

这几个站点,有点优秀

中国大学慕课网 网址&#xff1a;https://www.icourse163.org/ 大学生们这个白嫖网站咱一定不能错过&#xff0c;与全国801所高效合作&#xff0c;里面都是不同专业的精品课程&#xff0c;关键是它们都是免费的&#xff01;报名学习&#xff0c;就等着知识装满脑袋吧&#xff0…