题目:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
本题为简易版动态规划。遍历字符串,依次存入到数组中,如果字符有重复则计算出重复位置,用splice去重重复字符及前面的字符。用状态转移公式计算出该数组最长长度。
代码:
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
var max=0;
var t=[];
var sign=0;
var last=0;
for( var i=0;i<s.length;i++){
if(t.indexOf(s[i])==-1){
t.push(s[i]);
sign++;
}
else{
var v=t.indexOf(s[i]);
t.splice(0,v+1)
t.push(s[i])
sign=sign-v
}
max=Math.max(sign,max);
}
return max;
};