题目

给定字符串s,找最多包含两个不同字符的子串,且需要子串最长

类似   3. 无重复字符的最长子串

https://blog.csdn.net/weixin_51125132/article/details/117925266

思路

使用map记录char以及其对应的位置

使用Collections.min(map.values()) 去找到最靠前的一个位置,然后通过s.charAt()找到这个位置上对应的字母,这就是key

代码

class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {int ans = 0;int len = s.length();HashMap<Character, Integer> map = new HashMap<Character, Integer>();for (int start = 0, end = 0; end < len; end ++){char cur = s.charAt(end);map.put(cur, end);//新的会被添加,旧的key会被挤掉if (map.size() > 2){int minIndex = Collections.min(map.values());//找到第一个索引start = map.get(s.charAt(minIndex)) + 1; //挪动startmap.remove(s.charAt(minIndex)); //记得这个时候必须把不在map里面key-value的删掉}ans = Math.max(ans, end - start + 1);}return ans;}
}

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

  1. LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)

    159. 至多包含两个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {// 记录 ...

  2. LeetCode 159. 至多包含两个不同字符的最长子串(滑动窗口)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: ...

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

    题目描述: 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "e ...

  4. 力扣(LeetCode)159. 至多包含两个不同字符的最长子串(2022.06.08)

    给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ece&quo ...

  5. 【LeetCode - 159】至多包含两个不同字符的最长子串

    文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路   如果输入字符串 s 的长度小于等于 2,那么它自己就是"至多包含两个不同字符的最长子串",返回 ...

  6. 滑动窗口—至多包含两个不同字符的最长子串(leetcode 159)

    题目描述 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ec ...

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

    给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t . 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ece",长度为3. 示 ...

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

    m.clear() //清空哈希表 这道题也是使用滑动窗口来解决,我使用的还是Leecode3的那种方法,虽然AC了但是性能不太好, 看官方题解使用的. 忘记了1种情况:到了最后还是一个/两个但是没有 ...

  9. leetcode340. 至多包含 K 个不同字符的最长子串

    给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T. 示例 1: 输入: s = "eceba", k = 2 输出: 3 解释: 则 T 为 "ece ...

最新文章

  1. 微软CRM 2011 新功能之三:可新增客户化活动类型实体
  2. NestIn VS插件 visual studio 中将同类CS文件放在一起显示
  3. BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游
  4. ROI(投资回报率 Return On Investment)
  5. Alpine Linux 中的 apk 命令讲解
  6. numpy数组中冒号[:,:,0]与[...,0]的区别
  7. ASP.NET MVC模型绑定int超出范围时
  8. 拍拍贷第三届“魔镜杯”启动:10万美金邀你“秀出你的算法!”
  9. 计算机声卡和显卡驱动,电脑系统会不会影响声卡和显卡程序
  10. github电脑壁纸_有什么好用的电脑壁纸软件?
  11. 【BZOJ1502】【NOI2005】月下柠檬树
  12. 6iypl8php,无线超方便 YPL TL-1/TL-3蓝牙音箱新品上市
  13. php 多个一维数组合拼成二维数组的方法
  14. win11蓝牙无法使用 Windows11蓝牙无法使用的解决方法
  15. 计算机鼠标不动了,计算机鼠标不动了怎么解决?
  16. Arduino和Python实时监督控制和数据采集系统(SCADA)
  17. 那个耍了 Google 的天才工程师,又摆了 Uber 一道
  18. 电脑硬件相关简单知识
  19. 为什么建议大家使用 Linux 开发?爽(外加七个感叹号)
  20. 马蜂窝毕博:分析完这9点工作原理,我们最终选择了 Apache SeaTunnel!

热门文章

  1. js常见面试题及简单回答
  2. RK平台 MPP 与RGA ,解码h265绿屏,花屏解决方法
  3. origin作图怎样延伸_Origin使用
  4. Linux下Mysql 5.7的安装及远程连接配置
  5. (ChatGPT)429 You are being rate limited
  6. static(静态变量,方法)
  7. unityShader入门了解
  8. DWZ的几个常用组件
  9. js-es6知识汇总(1) 原型与原型链
  10. 设计模式-----装饰模式.