博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长回文子串解法
阅读量:4677 次
发布时间:2019-06-09

本文共 1503 字,大约阅读时间需要 5 分钟。

 

原题地址:https://leetcode.com/problems/longest-substring-without-repeating-characters/#/description

 

没咋么过脑子,瞬间能想到的思路大概为:

 

 "abcabcbb"
比如这个字符串
首先 声明一个数组  里面存放各种开分来的字符串; 切分条件是当这次循环的值 存在于当前的数组中
 
 像这样
abc bca cab abc bcb cb
 
最初的实现代码:
var str = "";    //生成一些随机字符    for(var i =0;i<1000000;i++){        str +=String.fromCharCode(Math.floor(97+Math.random()*(122-97)));    }        var resulte = [];//保存字符串结果    var index = 0;//索引while(str.length){        for(var i =0;i

 

第二日优化代码:

思路:

bcadeaopqrxyz

当上面的2个a 相遇的时候

第一个数组中应该存放的值为: bcade

首先能确定的是 bcade 肯定是正确的格式(无重复的字符串)

其次能确定的是  bcadea 绝对大过于 cade ade de 

也就是说 第一个a之前的值不用再循环了,循环直接从第一个a后面的值开始即可;

var str = "";    //生成一些随机字符    for(var i =0;i<1000000;i++){        str +=String.fromCharCode(Math.floor(97+Math.random()*(122-97)));    }    var resulte = [];//保存字符串结果    var index = 0;//索引    var maxStr = "";while(str.length){        for(var i =0;i
str.length){ str = ""; break; } var _pos = resulte[index].indexOf(str[i]); var _step = 0; if(_pos === -1){ resulte[index]+=str[i]; maxStr = maxStr.length < resulte[index].length ? resulte[index] : maxStr; }else{ // resulte[index+1] = resulte[index].slice(_pos+1) //这里还可优化 _step = str.indexOf(str[i]); break; } } str = str.slice(_step+1); index++; }console.log(maxStr)

 

转载于:https://www.cnblogs.com/websir/p/6883704.html

你可能感兴趣的文章
我大学时代的好朋友要结婚了!
查看>>
RTP Payload Format for Transport of MPEG-4 Elementary Streams over http
查看>>
PAT-1134. Vertex Cover (25)
查看>>
git 命令图解
查看>>
分布式存储系统可靠性系列三:设计模式
查看>>
this关键字的由来及使用
查看>>
两个时间相差多少 .net中的timespan应用
查看>>
递归 换零钱问题——由打靶子问题引申
查看>>
Python-函数基础
查看>>
Extensible Messaging and Presence Protocol (XMPP) 简介
查看>>
Farm Irrigation
查看>>
windows平板的开发和选型
查看>>
无平方因子的数(数论初步) By ACReaper
查看>>
C语言截取字符串
查看>>
如何查自己的账单
查看>>
JAVA8学习笔记(二)----三个预定义接口
查看>>
JDBC连接各种数据库的字符串
查看>>
构建之法阅读笔记06
查看>>
CentOS minimal新装配置笔记
查看>>
压缩映象原理的一个应用
查看>>