无重复字符的最长子串

题目链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。
给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。
给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。
因为不会写代码,所以要多多编程。
解析:题目不是特别难,但是还是思考了一下,想了下办法就是使用暴力去解决(菜鸟),两重循环,从第i( 0<= i <= n-1)个字符串,在第j个(i+1<= j <= n-1)后续字符串中遍历, 在遇到重复的字符串就记录当前的长度,没有需要重复的字符串就j++继续下去,然后从第i++重新开始循环

js代码部分:

var lengthOfLongestSubstring = function(s) {
  var res = 0, str = "", num = 0
   for( let i = 0; i<s.length; i++){
        str += s[i]
        num++;
        for(let j = i+1; j<s.length; j++){
            // str += s[j]
            // console.log(str)
            if( str.indexOf(s[j]) === -1 ){
                str += s[j]
                num++;
                if(num > res){
                    res = num;
                }
                if(j === s.length-1){
                    return res
                }
            }else{
                    str = ""
                    num = 0
                    break
                }

            }
            if(num > res){
        res = num;
    }
   }
   return res
};

代码实在是写得不好看,可能思路也不是很清晰,后面会优化这个算法。后面再来补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值