当前位置: 首页 > news >正文

力扣-hot100(无重复字符的最长子串)

3. 无重复字符的最长子串

中等

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

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

暴力直观解法一:

思路: 手动看题: -> O -> 不重复字符? os: 有没有这样一种数据结构....,有的兄弟有的。队列报你身份证了。 维护一个队列,每次往队列中加入元素,就去看看队列中是否有一个相同的元素已经在里面了,如果有,就把元素从前往后进行结算,再将该元素加入队列中,以此类推,得到最长子串.

class Solution {public int lengthOfLongestSubstring(String s) {Queue<Character> queue = new LinkedList<>();int n = s.length();int maxlen = 0;int len = 0;for(int i = 0; i < n; i ++){char c = s.charAt(i);// 判断队列中是否存在这么一个元素boolean std = queue.contains(c);// 还存在重复元素则把前面的不断进行移除if(std){while(queue.contains(c)){queue.remove();len--;}}// 移除完了就可以加入进行 queue.add(c);len ++;maxlen = Math.max(maxlen, len);}return maxlen;}
}

执行用时分布 18ms 击败10.70%

神魔 才10.70% OVO。观察上述代码主要耽误我时间的地方就是检查这个元素 queue.contains(c); -> O(n)。神魔在我的代码中怎么能有这种坏东西。

不服,再来

解法二: 用Set来维护这些元素(set.contains(c)的时间复杂度为O(1)),那怎么保留队列的性质呢? 我们只需要在加入元素的时候一直加加加,加到厌倦(出现了重复元素),然后移除的时候只需要移除掉那个重复元素就行

class Solution {public int lengthOfLongestSubstring(String s) {Set<Character> set = new HashSet<Character>();int len = s.length();int right = 0;int maxNumber = 0;for(int i = 0; i < len; i ++){// 除了第一次加入元素外,其它都是上一轮加到重复了才会停止,所以将上一个字符移除if(i != 0) set.remove(s.charAt(i - 1));
​// 加加加,加到厌倦while(right < len && !set.contains(s.charAt(right))){set.add(s.charAt(right));right ++;}maxNumber = Math.max(maxNumber, right  - i);}return maxNumber;}
}

6ms击败 67.99%

相关文章:

  • QML FileIO 组件
  • Qt项目实现对西门子PLC的读写操作(snap7)——C++
  • 关于大型语言模型的“生物学”
  • 算法题(128):费解的开关
  • 从裸仓库到GitLab全解析
  • 【愚公系列】《Python网络爬虫从入门到精通》056-Scrapy_Redis分布式爬虫(Scrapy-Redis 模块)
  • 不确定与非单调推理的可信度方法
  • REST 架构详解:从概念到应用的全面剖析
  • 多人五子棋联机对战平台 测试报告
  • AI文生图工具推荐
  • 计算机网络期中复习笔记(自用)
  • 8、表单控制:预言水晶球——React 19 复杂表单处理
  • tigase源码学习杂记-AbstractMessageReceiver
  • 二级评论列表-Java实现
  • PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(二)
  • 实战设计模式之备忘录模式
  • 数量关系 多级数列1
  • ClawCloud的免费空间(github用户登录可以获得$5元/月的免费额度)
  • PostgreSQL 的pgloader 工具介绍
  • Qt C++ 解析和处理 XML 文件示例
  • 华夏幸福:累计未能如期偿还债务金额合计为227.91亿元
  • 科技如何赋能社会治理?帮外卖员找新家、无人机处理交通事故……
  • 全球建筑瞭望|与自然共呼吸的溪谷石舍与海边公共空间
  • 街头残棋骗局:庄家、高手、路人皆假扮,云南一团伙四年骗150余万
  • 农业农村部原党组书记、部长唐仁健被提起公诉
  • “孤独的美食家”在上海连吃三天,直呼“好吃”“老嗲”