无重复字符的最长子串
题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
求解代码:
/** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { var res = 0; //初始化最长子串长度 var i = 0; var temp = []; //初始化存放子串字符的数组 while(i<s.length){ if(temp.indexOf(s[i]) === -1){ temp.push(s[i]); //如果s[i]不存在temp中,则向temp中添加该元素 }else{ temp.shift(); //去掉temp数组中的第一个元素 continue; //继续判断当前元素是否存在temp中 } res = Math.max(res,temp.length); //保留最大的子串长度 i++; } return res };
扩展:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 及其 长度。
代码如下:
var lengthOfLongestSubstring = function(s) { var res = 0; //初始化最长子串长度 var i = 0; var temp = []; //初始化存放子串字符的数组 var v_temp = []; while (i < s.length) { if (temp.indexOf(s[i]) === -1) { temp.push(s[i]); //如果s[i]不存在temp中,则向temp中添加该元素 } else { temp.shift(); //去掉temp数组中的第一个元素 continue; //继续判断当前元素是否存在temp中 } if (res < temp.length) { v_temp = [...temp]; //深拷贝 res = temp.length; } i++; } return [res,v_temp.join("")] }; var str = "abcabcbb"; // var str = "bbbbbbbbbb"; // var str = "eeydgwdykpv"; // var str = "pwwkew"; // var str = "abcabcdbbabc"; var new_str = lengthOfLongestSubstring(str); console.log(new_str)
注意:和上面单纯求解长度的思想是一样的