公司网站备案需要每年做吗,山东网站建设维护,wordpress迁移后除了首页,装饰协会网站源码说在前面 #x1f388;不知道大家对于算法的学习是一个怎样的心态呢#xff1f;为了面试还是因为兴趣#xff1f;不管是出于什么原因#xff0c;算法学习需要持续保持。 题目描述
给你一个字符串 s #xff0c;请找出满足每个字符最多出现两次的最长子字符串#xff0c;…说在前面 不知道大家对于算法的学习是一个怎样的心态呢为了面试还是因为兴趣不管是出于什么原因算法学习需要持续保持。 题目描述
给你一个字符串 s 请找出满足每个字符最多出现两次的最长子字符串并返回该子字符串的 最大 长度。
示例 1
**输入** s bcbbbcba**输出** 4**解释**以下子字符串长度为 4并且每个字符最多出现两次bcbbbcba。**示例 2****输入** s aaaa**输出** 2**解释**以下子字符串长度为 2并且每个字符最多出现两次aaaa。提示
2 s.length 100s 仅由小写英文字母组成。
解题思路
这道题目我们可以使用滑动窗口来解题使用一个哈希表记录每个字符串出现的次数当有字符出现的次数大于2时我们需要将窗口的左指针右移直到改字符出现的次数小于等于2这个时候窗口的长度即为满足条件的字符串长度我们只需要遍历完整个数组获取到最大的窗口长度即可。
AC代码
/*** param {string} s* return {number}*/
var maximumLengthSubstring function (s) {const map {};let res 0,left 0;for (let i 0; i s.length; i) {let cnt map[s[i]] || 0;map[s[i]] cnt 1;if (cnt 1) {while (s[left] ! s[i]) {map[s[left]]--;}map[s[left]]--;}res Math.max(res, i - left 1);}return res;
};公众号
关注公众号『前端也能这么有趣』获取更多有趣内容。
说在后面 这里是 JYeontu现在是一名前端工程师有空会刷刷算法题平时喜欢打羽毛球 平时也喜欢写些东西既为自己记录 也希望可以对大家有那么一丢丢的帮助写的不好望多多谅解 写错的地方望指出定会认真改进 偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章有兴趣的也可以关注下。在此谢谢大家的支持我们下文再见 。