如何设计符合成都网站建设的铝型材网络机柜?
摘要:成都网站建制作,铝型材网络机柜设计报告,服装品牌策划公司,仿皮皮淘网站开发全程培训废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构&am
成都网站建制作,铝型材网络机柜设计报告,服装品牌策划公司,仿皮皮淘网站开发全程培训废话不多说#xff0c;喊一句号子鼓励自己#xff1a;程序员永不失业#xff0c;程序员走向架构#xff01;本篇Blog的主题是最长无重复子串或最长无重复子数组#xff0c;这类题目出现频率还是很高的。
最长无重复子串【MID】
先来看字符串数据结构的题目
题干 解题思…废话不多说喊一句号子鼓励自己程序员永不失业程序员走向架构本篇Blog的主题是最长无重复子串或最长无重复子数组这类题目出现频率还是很高的。
最长无重复子串【MID】
先来看字符串数据结构的题目
题干 解题思路
整体目标就是获取最大的无重复滑动窗口
双指针标识数组或字符串的位置右指针可以理解为放大窗口指针左指针可以理解为缩小窗口指针定义一个set用来存储元素位置对应的值右指针先行如果一直无重复就一直开拓窗口并更新max值否则移动左指针缩小窗口直到将重复值缩到窗口以外。
如下图所示
代码实现 基本数据结构字符串 辅助数据结构哈希表 算法迭代 技巧双指针、滑动窗口 class Solution {public int lengthOfLongestSubstring(String s) {// 1 判断入参是否为空列表if (s.length() 0) {return 0;}// 2 定义返回结果最大值和左右指针以及滑动窗口集合int max 0;int left 0;int right 0;SetCharacter set new HashSet();// 3 滑动窗口移动并在无重复时计算最大值while (left s.length() right s.length()) {// 1 无重复右指针继续移动重新计算最大值if (!set.contains(s.charAt(right))) {set.add(s.charAt(right));max Math.max(max, right - left);} else {// 2 有重复左指针继续移动直到将重复元素移出集合set.remove(s.charAt(left));}}return max;}
}复杂度分析
时间复杂度为ON因为遍历了字符串空间复杂度为ON借助了HashSet的存储空间
