资讯专栏INFORMATION COLUMN

给定一个字符串,请你找出其中不含有重复字符的最长子串的长度

Cristalven / 2920人阅读

摘要:标题答案字符串为空取出来所有不含重复字符的字符串取出来最长的字符串备忘问题给定一个字符串,请你找出其中不含有重复字符的最长子串答案如下字符串为空取出来所有不含重复字符的字符串取出来最长的字符串

标题答案
var str = "abcabcbb";
getLongStr(str);
// getLongStr("aa");
function getLongStr(str) {
    if(!str) {
        return "字符串为空";
    }
    if(str.length === 1) {
        return 1;
    }
    var arr = str.split("");
    var obj = {};
    var strArr = [];
    var nStr = ""
    var j = 0;

    // 取出来所有不含重复字符的字符串
    for(var i = 0, len = arr.length; i < len; i++) {
        var val = arr[i];
        if(obj[val]) {
            i = j;
            j++;
            obj = {};
            strArr.push(nStr);
            nStr = "";
        } else {
            obj[val] = true;
            nStr += val;
        }
    }
    
    // 取出来最长的字符串
    var longIndex = strArr[0].length;
    for (var i = 1, len = strArr.length; i < len; i++) {
        var nLen = strArr[i].length;
        var nVal = strArr[i];
        if (nLen > longIndex) {
            longIndex = nLen;
        }
    }
 
    return longIndex;
}
备忘

问题:给定一个字符串,请你找出其中不含有重复字符的最长子串?
答案如下:

// getLongStr("abcabcbb");
// getLongStr("aa");

function getLongStr(str) {
    str += "";
    if(!str) {
        return "字符串为空"
    }
    if(str.length === 1) {
        return str;
    }
    var arr = str.split("");
    var obj = {};
    var strArr = [];
    var nStr = ""
    var j = 0;

    // 取出来所有不含重复字符的字符串
    for(var i = 0, len = arr.length; i < len; i++) {
        var val = arr[i];
        if(obj[val]) {
            i = j;
            j++;
            obj = {};
            strArr.push(nStr);
            nStr = "";
        } else {
            obj[val] = true;
            nStr += val;
        }
    }
    
    // 取出来最长的字符串
    var longIndex = strArr[0].length;
    var longArr = [strArr[0]]
    for (var i = 1, len = strArr.length; i < len; i++) {
        var nLen = strArr[i].length;
        var nVal = strArr[i];
        if (nLen > longIndex) {
            longIndex = nLen;
            longArr = [nVal];
        }
        if (nLen === longIndex) {
            longArr.push(nVal)
        }
    }
 
    return [...new Set(longArr)].join();
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102867.html

相关文章

  • LeetCode3.无重复字符最长子串JavaScript

    摘要:示例输入输出解释因为无重复字符的最长子串是,所以其长度为。请注意,你的答案必须是子串的长度,是一个子序列,不是子串。 LeetCode3.无重复字符的最长子串JavaScript 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: abcabcbb输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为 3。 示例 2: 输入: bbbbb输出...

    vboy1010 评论0 收藏0
  • 【leetcode】3. 无重复字符最长子串

    摘要:示例输入输出解释因为无重复字符的最长子串是,所以其长度为。请注意,你的答案必须是子串的长度,是一个子序列,不是子串。完成循环后取队列中出现的最大长度即可。 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为 3。 示例 2: 输入: bbbbb 输出: 1 解释:...

    qc1iu 评论0 收藏0
  • LeetCode.3 无重复字符最长子串(JS)

    摘要:先跳到第三题是因为第二题第一眼没读懂一题目无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例输入输出解释因为无重复字符的最长子串是,所以其长度为。以此来实现判断是否包含重复字符。 先跳到第三题是因为第二题第一眼没读懂 一、题目 无重复字符的最长子串: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例1 输入: abcabcbb输...

    wthee 评论0 收藏0
  • JS算法题之leetcode(1~10)

    摘要:先去空白,去掉空白之后取第一个字符,判断正负符号,若是英文直接返回,若数字则不取。回文数题目描述判断一个整数是否是回文数。回文数是指正序从左向右和倒序从右向左读都是一样的整数。 JS算法题之leetcode(1~10) 前言 一直以来,前端开发的知识储备在数据结构以及算法层面是有所暂缺的,可能归根于我们的前端开发的业务性质,但是我认为任何的编程岗位都离不开数据结构以及算法。因此,我作为...

    SoapEye 评论0 收藏0
  • 前端中等算法-无重复字符最长子串

    摘要:无重复字符的最长子串难度中等描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。输入输出解释因为无重复字符的最长子串是,所以其长度为。 无重复字符的最长子串 难度:中等 描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 样例: 输入: abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为 3。 输入: bbbbb ...

    hyuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<