题目描述

解法:滑动窗口思想
设置i,j两个指针,分别表示窗口的左边界和右边界。maxSize记录无重复字串的最大长度。
// An highlighted block
class Solution {
public int lengthOfLongestSubstring(String s) {
int n = s.length();
Set set = new HashSet();
int maxSize = 0,i = 0,j = 0;
while(i < n && j < n){
if(!set.contains(s.charAt(j))){
set.add(s.charAt(j++));
maxSize = Math.max(maxSize,j - i);
}else{
set.remove(s.charAt(i++));
}
}
return maxSize;
}
}


该博客介绍了如何使用滑动窗口思想来解决字符串中找到最长无重复字符子串的问题。通过设置两个指针i和j作为窗口的边界,动态维护一个HashSet来存储窗口内的字符,当遇到重复字符时更新窗口的左边界,从而找到最大长度的无重复字符子串。这种方法有效地避免了使用额外的数据结构来存储所有可能的子串。
736

被折叠的 条评论
为什么被折叠?



