zoukankan      html  css  js  c++  java
  • Algorithm——无重复字符的最长子串

    一、问题

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

    示例 1:
    
    输入: "abcabcbb"
    输出: 3 
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:
    
    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:
    
    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
         请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

    二、解决

    /**
     * @param {string} s
     * @return {number}
     */
    var lengthOfLongestSubstring = function(s) {
        //遇到一个重复元素时,结束
        let max = 0;
        let countArr = [];
        let arr = s.split('');
        for (let i = 0; i < arr.length; i++) {
            countArr.push(arr[i]);
            //没结尾
            if (arr[i+1] != undefined) {
                //不包含下一个元素
                if (countArr.indexOf(arr[i+1]) < 0) {
                    if (max < countArr.length) {
                        max = countArr.length; 
                    } 
                } 
                //包含下一个元素
                else {
                    countArr.splice(0, countArr.indexOf(arr[i+1])+1);
                    //console.log(countArr);
                }           
            } 
            //结束
            else {
                max++;
            }  
        }
       
        //console.log(max);
        return max;
    };
  • 相关阅读:
    numpy、torch:[ ]里传函数,数组过滤
    torch:torch.sort
    torch : transpose,transpose_
    托管堆和垃圾回收笔记
    UdpClient类客户端和服务端demo
    JavaScript阻止事件冒泡
    单元测试初接触
    CSS选择器
    文档onload处理程序
    TASKKILL命令使用方法
  • 原文地址:https://www.cnblogs.com/bbcfive/p/10634396.html
Copyright © 2011-2022 走看看