想了很久的算法

2023-11-02



1.求字符串中不重复的最长子串

var lengthOfLongestSubstring = function (s) {
        let setArr = new Set(), result = [], 
        max = 0;
        let left = 0, right = 0, len = s.length;
        while (left < len) {
            // 如果不重复,就不断扩张窗口,元素添加到set中
            while (right < len && !setArr.has(s[right])) {
                setArr.add(s[right]);
                right++;
            }
            // 到这里说明有元素重复了,先记录子串长度,然后收缩窗口
            //当里面有了这个字符,删除之前先存一下
            //存的条件是长度比里面的都大,并且不重复
            //这个可以是找出里面长度是最长的那个子串
            let str1 = s.substring(left,right);
            
            if(str1.length >= max){
                result.push(str1)
            } 
            max = Math.max(max, right - left);
            // 收缩窗口,删除最左边的
            setArr.delete(s[left]);
            left++;
        }
        //这里是把符合最长的长度的子串过滤出来
        return result.filter((item,index)=>{
            if(item.length == max){
                return item
            }
        })
    };
    最终返回这个样的值 ["abc", "cba", "bac"]

2.斐波那契数列多种实现方式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

想了很久的算法 的相关文章

  • Java实现数据结构——数组

    数组是一种比较简单的数据结构 而且在大多数高级程序设计语言中都实现了数组 一 无序数组 利用面向过程的思想创建数组 实现数组元素的插入 查找和删除工作 public class Box public static void main Str
  • 软件工程——第12章面向对象实现知识点整理

    本专栏是博主个人笔记 主要目的是利用碎片化的时间来记忆软工知识点 特此声明 文章目录 1 面向对象语言技术的特点

随机推荐

  • MATLAB:用for循环求1、2、……100的和以及用函数文件求前N项和

    MATLAB 用for循环求1 2 100的和以及用函数文件求前N项和 1 A 0 for i 1 100 A A i end A 或 sum 1 100 2 function n A n if n 1 n 1 else n n A n 1
  • iOS UIFont 的学习与使用

    通常 我们使用字体 都是系统默认的字体 有时候 从阅读体验 美观度 设计师都会考虑用一些 更高大尚的字体 系统字体库 给英文 各种style的发挥空间很大 但是 中文则不然 但是苹果 给使用中文的字体的开发者提供了 动态下载字体库的福利 这
  • QT生成.exe安装文件

    QT生成 exe安装文件 找到应用文件的运行的相关文件 1 在QT项目中 使用release进行调试 在release目录下生成 exe文件 release调试目录一般有两种 查看 项目 中的 概要 可以找到release的路径 一般情况下
  • int与byte、byte[]相互转换

    一 int to byte 范围在 128 127之间可以直接转换 超出这个范围就乱了 int i 127 byte b byte i Integer i 127 i byteValue 二 byte to int byte to int
  • docker进入容器出现bash-4.2#解决办法--转载

    docker进入容器显示bash 4 2 如下 root VM 4 15 centos shopmall docker exec it u root 1f654abf60ac bash bash 4 2 出现上述问题是因为在 root 目录
  • 编码规范-枚举管理

    18 枚举 枚举值 一种采用连续序号 0 1 2 3 4 5 6 一种采用二进制位值 0 1 2 4 8 16 还有一种是不规则数字 如串口波特率 枚举值格式 枚举类型变量 枚举类型值 枚举类型说明 枚举值最后标明 默认值 最大值 最小值
  • python交互式解释器下载_python解释器的下载和安装

    1 python解释器的下载 python这样的语言 需要一个解释器 而且解释器还有多种语言的实现 我们介绍的是最常用的C语言的实现 称之为Cpython Python通过在各种操作系统上都有各自的解释器 通过各个操作系统上的解释器 pyt
  • 精选30道Java多线程面试题

    1 线程和进程的区别 2 实现线程有哪几种方式 3 线程有哪几种状态 它们之间如何流转的 4 线程中的start 和run 方法有什么区别 5 怎么终止一个线程 如何优雅地终止线程 6 ThreadLocal在多线程中扮演什么角色 7 线程
  • WEB API 中HTTP的get、post、put,delete 请求方式

    一 WEB API 中HTTP 请求方式的四个主要方法 GET PUT POST DELETE 按照下列方式映射为 CURD 操作 1 POST 用于新建资源 服务端在指定的URI 上创建一个新的对象 将新资源的地址作为响应消息的一部分返回
  • 空间转录组共定位分析的一种方法

    主要是利用了Seurat 里面AddModuleScore函数 View project A33 meta data AddModuleScore ILC1 feature lt list c IL7R CCR6 KLRB1 IFNG IF
  • Dataframe 多行合并为一行

    原表数据 最后4行合并为1行 def ab df return join df values df df groupby 股票代码 股票简称 所属概念 apply ab df df reset index 效果如下 转载于 https ww
  • Qt编译后添加依赖文件到输出目录

    QMAKE POST LINK cp rf PWD lab const 1 xml OUT PWD lab const 1 xml cp rf PWD experiment1 xml OUT PWD experiment1 xml 这个是L
  • Python爬虫必知必会:BeautifulSoup之find_all参数速览

    find all 方法搜索当前tag的所有tag子节点 并判断是否符合过滤器的条件 find all name attrs class recursive string kwargs name 标签名搜索 attrs class 属性 类名
  • *** FATAL ERROR L232: APPLICATION CONTAINS TOO MANY RECURSIONS错误的解决方案

    最近一直在用KEIL写一个单片机的程序 遇到了一个很棘手的无法正常链接的问题 FATAL ERROR L232 APPLICATION CONTAINS TOO MANY RECURSIONS 在网上搜索了大量的文章 以及网页也没找到什么有
  • Redis介绍与使用

    文章目录 一 概念 1 什么是NOSQL 1 1 NOSQL和关系型数据库比较 1 2 非关系型数据库的优势 1 3 关系型数据库的优势 1 4 小结 2 主流的NOSQL产品 3 什么是Redis redis的应用场景 二 下载安装 三
  • rosbag commandline常用命令之filter

    可以实现对已有rosbag文件中的某些topic去除或者保留 rosbag filter input bag output bag topic tf or topic tf and m transforms 0 header frame i
  • 详解.NET实现OAuth2.0四种模式(6)RefreshToken

    我们知道 为了安全起见 AccessToken的有效时间一般是比较短的 如30分钟 在AccessToken超出有效期之后 它就不能再用于访问资源 必须重新获得 但如果每30分钟 就要让用户登录一次 那必定会让用户感到厌烦 于是就产生了Re
  • 公共命名空间,于2022年底

    公共命名空间的想法出现自2019年 到现在有三年了 在2022年底 总结一下这三年来的想法 就像字符集 字体 公共命名空间 新编译原理也是这么一对儿 字符集用来收集所有符号 字体用来显示字符集中的符号 公共命名空间用来收集所有的句子 新编译
  • java里的输入与输出

    一 概述 输入输出可以说是计算机的基本功能 作为一种语言体系 java中主要按照流 stream 的模式来实现 其中数据的流向是按照计算机的方向确定的 流入计算机的数据流叫做输入流 inputStream 由计算机发出的数据流叫做输出流 o
  • 想了很久的算法

    文章目录 1 求字符串中不重复的最长子串 2 斐波那契数列多种实现方式 1 求字符串中不重复的最长子串 var lengthOfLongestSubstring function s let setArr new Set result ma