给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
这是一个比较典型的可以用滑动窗口来做的题
维护一个最长子串str,遍历s,依次将s[i]加入到str子串中,如果s[i]已经在str中存在,这一步可以用string的indexOf方法,一来是可以判断是否存在,二来获取到的index下标可以用于将重复字符出现的位置截断,重新得到新的不重复子串。全局维护一个最长值len,出现重复值时记录下此时最长的子串长度
var lengthOfLongestSubstring = function(s) {
if(s.length===1) return 1
let len=0
let str=s[0]
for(let i=1;i<s.length;i++) {
let index=str.indexOf(s[i])
str+=s[i]
if(index!==-1) {
str=str.slice(index+1)
}
len=len>str.length?len:str.length
}
return len
};