当前位置:网站首页>滑动窗口_
滑动窗口_
2022-07-26 00:03:00 【林纾໌້ᮨ】
1.力扣_最长不含重复字符的子字符串
/**
* 无重复字符的最长子串
* 字符存储到set集合,如果有重复的直接之前的从set集合移除,加进来新的字符
*/
import java.util.HashSet;
import java.util.Set;
/**
* 思路:滑动窗口
* 以(a)bcabcbb 开始的最长字符串为 (abc)abcbb;
* 以a(b)cabcbb 开始的最长字符串为 a(bca)bcbb;
* 以ab(c)abcbb 开始的最长字符串为 ab(cab)cbb;
* 以abc(a)bcbb 开始的最长字符串为 abc(abc)bb;
* 以abca(b)cbb 开始的最长字符串为 abca(bc)bb;
* 以abcab(c)bb 开始的最长字符串为 abcab(cb)b;
* 以abcabc(b)b 开始的最长字符串为 abcabc(b)b;
* 以abcabcb(b) 开始的最长字符串为 abcabcb(b).
* 此时观察,我们需要边加入字符边移除字符。将字符逐个存入set集合,如果后面的元素有重复出现的字符,则set集合元素出集合直到无此重复元素,再将此元素入set集合
*/
public class Num48_无重复字符的最长子串 {
public int lengthOfLongestSubstring(String s) {
int max=0;
int right=0;
Set<Character> set = new HashSet<>();
for (int left = 0; left < s.length(); left++) {
//左指针向后遍历,移除left的前一个元素
if(left!=0){
set.remove(s.charAt(left-1));
}
//左指针定住,右指针向后走,元素不但放入set集合,直到遇到与set中元素重复或走到空记录长度
while (right<s.length()&&(!set.contains(s.charAt(right)))){
set.add(s.charAt(right));
right++;
}
max=Math.max(max,right-left);
}
return max;
}
}
边栏推荐
- Getaverse,走向Web3的远方桥梁
- SIGIR '22 recommendation system paper graph network
- How to use yolov5 as an intelligent transportation system for red light running monitoring (1)
- NVIDIA cuDNN学习
- SQLZOO——Nobel Quiz
- Binary tree - 617. Merge binary tree
- How does the server build a virtual host?
- C - readonly and const keywords
- 如何用yolov5 做个闯红灯监控的智能交通系统(1)
- Js理解之路:Object.call与Object.create()实现继承的原理
猜你喜欢

Binary tree - 110. Balanced binary tree

The mobile version of Duoyu security browser will add new functions to make users browse more personalized

二叉树——112. 路径总和

二叉树——404. 左叶子之和

Binary tree - 617. Merge binary tree

初阶C语言 - 分支语句(if、switch)

Yolov4 tiny network structure

Leetcode200 - find detailed explanation of the number of islands

回溯——77. 组合

Shib (firewood Dog Coin) rose hundreds of times in January. What core elements does a hundred times coin need? 2021-05-09
随机推荐
最近随感,关于牛市和DeFi 2021-05-17
Iterator pattern of behavioral pattern
Binary tree -- 111. Minimum depth of binary tree
Article 75: writing skills of academic papers
07_ UE4 advanced_ MP value of firing fireball and mechanism of attacking blood deduction
行为型模式之责任链模式
初阶C语言 - 分支语句(if、switch)
Pytorch学习记录(一):Pytorch 简介
解决不挂载数据的页面刷新
C language actual combat guessing game
模块二作业
BGR and RGB convert each other
TOPSIS and entropy weight method
Annotation @autowired source code analysis
二叉树——654. 最大二叉树
栈与队列——239. 滑动窗口最大值
二叉树——257. 二叉树的所有路径
Are you still using your browser's own bookmarks? This bookmark plugin is awesome
34-SparkSQL自定义函数的使用、SparkStreaming的架构及计算流程、DStream转换操作、SparkStreaming对接kafka和offset的处理
二叉树——104. 二叉树的最大深度