当前位置: 首页 > Web前端 > JavaScript

算法(leetode,附思维导图+全解)300题(三)无重复字符的最长子串

时间:2023-03-26 23:35:01 JavaScript

零题目:算法(leetode,附思维导图+全解)300题(三)无重复字符的最长子串1题目描述2方案概览(思维导图)3所有方案1方案11)代码:varlengthOfLongestSubstring=function(s){//判断当前“子串”的每个字符是否唯一PropertyconstcheckSubStrCharUnique=(subStr)=>{//技巧:涉及“唯一性”和“数量”,优先考虑Hash(JS中的Map)数据结构letmap=newMap(),l=subStr.length,flag=true;for(leti=0;i0;curLength--){//start-本次循环的subStr开始下标for(letstart=0;start<=l-curLength;start++){//本次循环的滑动窗口长度+subStr开始下标-->subStr//and判断当前的subStr是否“合法”?如果是这样,当前滑动窗口的长度curLength就是我们预期的答案!constsubStr=s.substr(start,curLength);如果(checkSubStrCharUnique(subStr)){resLength=curLength;返回resLength;}}}returnresLength;}2Scheme21)代码://Scheme2——“暴力滑动窗口”优化版varlengthOfLongestSubstring=function(s){leti=0,l=s.length,//记录当前非重复字符子串curUniqueArr=[],//当前最大非重复字符子串长度resLength=0;while(i