算法练习4-最长无重复子串

复制代码

复制代码
//-------------------字符串所有子串 - 递归---------------------------
var strFromSubStr = function (str) {
    let result = []
    
    function dfs (s) {
        if (s.length === 1) {
            result.push(s)
            return result
        }
        let one = s[0]
        let subs = dfs(s.slice(1))
        subs.forEach(ss => {
            result.push(one, one + ss)
        })
        return result
     }
    dfs(str)
    return [...new Set(result)]
}
复制代码

 

// ------------------最长无重复子串----------------------------
var lengthOfLongestSubstring = function(s) {
    let max = 0
    let left = 0
    let right = 1
    let l = 0
    let r = 0
    if (s.length === 0 || s.length === 1) return s.length
    while (right < s.length) {
        let sub = s.slice(left, right)
        if (sub.indexOf(s[right]) > -1) {
            left++
            continue
        } else {
            right++
        }
        if (right - left > max) {
            max = right - left
            l = left
            r = right
        }
    }
    console.log(s.slice(l, r))
    return s.slice(l, r).length
};
复制代码

 

posted @   monkey-K  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示