中等 | 滑动窗口 |
一. 题目描述
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
二. 题目示例
:::tips
输入:s = “abcabcbb”
输出:3
:::
:::tips
输入:s = “bbbbb”
输出:1
:::
:::tips
输入:s = “pwwkew”
输出:3
:::
三. 题目解答
1. 思路
设置头指针、尾指针,记录字符和所在下标的数据结构。固定头指针,尾指针后移,对当前遍历到的尾指针所在元素做判断:
如果重复,移动头指针位置,删除当前重复字符的记录;
插入新的记录,并比较当前长度与最大长度。
最后返回最大长度。
2. 代码
var lengthOfLongestSubstring = function(s) {let result = 0;let i=0;let temp = [];while(i < s.length){const index = temp.indexOf(s[i]);if(index !== -1){temp = temp.splice(index+1);}temp.push(s[i]);result = Math.max(result, temp.length);i++;}return result;};
