Javascript算法:非固定宽度滑动窗口算法
发布日期:2021-06-30 15:46:01 浏览次数:2 分类:技术文章

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

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

思想:在一个字符串中,有两个标记left和right。right由0移动到字符串最后一位,每次移动一位。每次移动,判断新增加的一位在之前的字符串中是否存在,如果不存在,继续移动,如果存在,移动left至新增加的right位在之前字符串中的位置的下一位。

举例:

在下图中,right第四次移动时,right移动到D上,此时之前字符串ADCB已经包含字符D,移动left至之前字符串中D的位置的下一位。以此类推

在这里插入图片描述

代码

var lengthOfLongestSubstring = function(str) {
if (!str.length) return 0; let tmpStr = ''; let maxStrLen = 0; let left = 0; for (let i = 0; i < str.length; i++) {
if (tmpStr.indexOf(str[i]) !== -1) {
left += (str.slice(left, i).indexOf(str[i]) + 1); continue } tmpStr = str.slice(left, i + 1); maxStrLen = Math.max(maxStrLen, tmpStr.length) } return maxStrLen};

所用JavaScript原生字符串函数

indexOf() 检索字符串

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

slice() 截取字符串,并返回截取的字符串。

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

转载地址:https://kaisarh.blog.csdn.net/article/details/105380483 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode:每日一题(2020.4.8)
下一篇:LeetCode:每日一题(2020.4.7)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月20日 02时17分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章