Leetcode剑指offer16不含有重复字符的最长子字符串

举报
伯约同学 发表于 2022/03/15 23:36:47 2022/03/15
【摘要】 Leetcode16不含有重复字符的最长子字符串给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。答题:/** \* @param {string} s \* @return {number} */var lengthOfLongestSubstring = function(s) { let queue = [] let maxLen = 0 for(l...

Leetcode16不含有重复字符的最长子字符串

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

答题:

/**
 \* @param {string} s
 \* @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  let queue = []
  let maxLen = 0 
  for(let i=0;i<s.length;i++){
•    if(queue.includes(s[i])){
•      queue.splice(0,1+queue.indexOf(s[i]))
•      queue.push(s[i])
•    }else{
•      queue.push(s[i])
•      maxLen = Math.max(maxLen,queue.length)
•    }
  }
  return maxLen
};

实际上是考察你一个滑动窗口的问题,queue中包含了一个不包含重复字符的数组,如果有新加进来的字符在数组中有重复,则剔除queue中的该字符以及之前的字符。没有的话就比较一下当前数组的长度和上一个len的大小,注意这里不是++哦

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。