3. Sliding Window
Sliding window
Template
public int slidingWindow(String s) {
// ========= 模板:定义相关数据结构,初始化工作============
HashMap<Character, Integer> windowMap = new HashMap<>();
int left, right, res;
left = right = res = 0;
// ================== 模板:开始滑动窗口=====================
while (right < s.length()) {
// =========== 模板:向右滑动窗口,装填满足的字符到map中==========
char c = s.charAt(right);
right++;
windowMap.put(c, windowMap.getOrDefault(c, 0) + 1);
// =========== 根据题意:此时“有可能”出现满足条件的解 ==========
// 判断左侧窗口是否要收缩
while (window_map.get(c) > 1) {
char d = s.charAt(left);
left++;
// 进行窗口内数据的一系列更新
windowMap.put(d, windowMap.getOrDefault(d, 0) - 1);
}
// 在这里更新答案
res = Math.max(res, right - left);
}
return res;
}Typic problems
Last updated