js做算法题-无重复字符的最长子串

无重复字符的最长子串

题目来源:LeetCode No.3

题目描述:

无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。

示例:

给定 "abcabcbb" ,没有重复字符的最长子串是"abc",那么长度就是3。

给定 "bbbbb" ,最长的子串就是 "b",长度是1。

给定 "pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是 子序列 而不是子串。

思路分析:

对字符串进行遍历,使用String.prototype.indexOf()实时获取遍历过程中的无重复子串并存放于str,并保存当前状态最长无重复子串的长度为res,当遍历结束时,res的值即为无重复字符的最长子串的长度。

代码示例:

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    var res = 0; // 用于存放当前最长无重复子串的长度
    var str = ""; // 用于存放无重复子串
    var len = s.length;
    for(var i = 0; i < len; i++) {
      var char = s.charAt(i);
      var index = str.indexOf(char);
      if(index === -1) {
        str += char;
        res = res < str.length ? str.length : res;
      } else {
        str = str.substr(index + 1) + char;
      }
    }
    return res; 
};

点击查看更多算法题js实现

猜你喜欢

转载自blog.csdn.net/weixin_40870788/article/details/80727953