給定一個字符串,請你找出其中不含有重複字符的最長子串的長度

標題答案

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;
}

備忘

問題:給定一個字符串,請你找出其中不含有重複字符的最長子串?
答案以下:code

// 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();
}
相關文章
相關標籤/搜索