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

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

1.题目基本信息

1.1.题目描述

给你一个字符串 s ,请你找出 至多 包含 两个不同字符 的最长子串,并返回该子串的长度。

1.2.题目地址

https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/description/

2.解题方法

2.1.解题思路

滑动窗口

2.2.解题步骤

第一步,定义维护变量。left和right为滑动窗口的左右指针;map_记录子串中单字符最右端的索引位置

第二步,滑动窗口进行滑动,更新maxLength

  • 2.1.删除map_中最左边的字符映射

  • 2.2.重置left指针

  • 2.3.更新maxLength

3.解题代码

python代码

class Solution:def lengthOfLongestSubstringTwoDistinct(self, s: str) -> int:if len(s)<=2:return len(s)length=len(s)# 第一步,定义维护变量。left和right为滑动窗口的左右指针;map_记录子串中单字符最右端的索引位置left,right=0,0map_={}# 第二步,滑动窗口进行滑动,更新maxLengthmaxLength=2for i in range(length):char = s[i]right = imap_[char] = right# 2.1.删除map_中最左边的字符映射if len(map_)>=3:minValue=min(map_.values())for key,value in map_.copy().items():if value==minValue:del(map_[key])# 2.2.重置left指针left=minValue+1# 2.3.更新maxLengthmaxLength=max(maxLength,right-left+1)return maxLength

4.执行结果

相关文章:

  • 金额高精度计算-BigDecimal
  • .NET WinForm图像识别二维码/条形码
  • Day39
  • 【Pandas】pandas DataFrame equals
  • 构筑电网“无形防线”: 防外破告警在线监测服务系统
  • 数据结构 -- 判断正误
  • 【数据结构】栈和队列(下)
  • 从零开始创建 Vue 3 开发环境并构建第一个 Demo
  • 【Pandas】pandas DataFrame duplicated
  • Opencv实用操作5 图像腐蚀膨胀
  • WPF log4net用法
  • Facebook 的隐私保护措施是否足够?技术观点
  • 1614. 括号的最大嵌套深度【 力扣(LeetCode) 】
  • LVS+KeepAlived
  • ansible template 文件中如果包含{{}} 等非ansible 变量处理
  • 【python深度学习】Day 39 图像数据与显存
  • 关于 JavaScript 版本、TypeScript、Vue 的区别说明, PHP 开发者入门 Vue 的具体方案
  • 2.spring基础入门(二)
  • 充电便捷,新能源汽车移动充电服务如何预约充电
  • 数字孪生数据监控如何提升汽车零部件工厂产品质量
  • 用word怎么做首页网站/直接登录的网站
  • 怎样用网站做淘宝推广/网站关键词怎么添加
  • 十大景观设计公司/站长之家seo综合
  • 用dreamweaver做网站怎么切块/网站关键词优化wang
  • 网站建设的公司选哪家/东莞免费网站建设网络营销
  • 营销网站建设文章/环球资源网站网址