159. 至多包含两个不同字符的最长子串
题目
给定字符串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. 至多包含两个不同字符的最长子串相关推荐
- LeetCode 159. 至多包含两个不同字符的最长子串 (滑动窗口哈希表)
159. 至多包含两个不同字符的最长子串 class Solution {public int lengthOfLongestSubstringTwoDistinct(String s) {// 记录 ...
- LeetCode 159. 至多包含两个不同字符的最长子串(滑动窗口)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: ...
- 159 至多包含两个不同字符的最长子串
题目描述: 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "e ...
- 力扣(LeetCode)159. 至多包含两个不同字符的最长子串(2022.06.08)
给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ece&quo ...
- 【LeetCode - 159】至多包含两个不同字符的最长子串
文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路 如果输入字符串 s 的长度小于等于 2,那么它自己就是"至多包含两个不同字符的最长子串",返回 ...
- 滑动窗口—至多包含两个不同字符的最长子串(leetcode 159)
题目描述 给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度. 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ec ...
- leetcode159. 至多包含两个不同字符的最长子串
给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t . 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ece",长度为3. 示 ...
- Leecode159:至多包含两个不同字符的最长子串
m.clear() //清空哈希表 这道题也是使用滑动窗口来解决,我使用的还是Leecode3的那种方法,虽然AC了但是性能不太好, 看官方题解使用的. 忘记了1种情况:到了最后还是一个/两个但是没有 ...
- leetcode340. 至多包含 K 个不同字符的最长子串
给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T. 示例 1: 输入: s = "eceba", k = 2 输出: 3 解释: 则 T 为 "ece ...
最新文章
- 微软CRM 2011 新功能之三:可新增客户化活动类型实体
- NestIn VS插件 visual studio 中将同类CS文件放在一起显示
- BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游
- ROI(投资回报率 Return On Investment)
- Alpine Linux 中的 apk 命令讲解
- numpy数组中冒号[:,:,0]与[...,0]的区别
- ASP.NET MVC模型绑定int超出范围时
- 拍拍贷第三届“魔镜杯”启动:10万美金邀你“秀出你的算法!”
- 计算机声卡和显卡驱动,电脑系统会不会影响声卡和显卡程序
- github电脑壁纸_有什么好用的电脑壁纸软件?
- 【BZOJ1502】【NOI2005】月下柠檬树
- 6iypl8php,无线超方便 YPL TL-1/TL-3蓝牙音箱新品上市
- php 多个一维数组合拼成二维数组的方法
- win11蓝牙无法使用 Windows11蓝牙无法使用的解决方法
- 计算机鼠标不动了,计算机鼠标不动了怎么解决?
- Arduino和Python实时监督控制和数据采集系统(SCADA)
- 那个耍了 Google 的天才工程师,又摆了 Uber 一道
- 电脑硬件相关简单知识
- 为什么建议大家使用 Linux 开发?爽(外加七个感叹号)
- 马蜂窝毕博:分析完这9点工作原理,我们最终选择了 Apache SeaTunnel!