题目描述
代码
class Solution {
public int lengthOfLongestSubstring(String s) {
/*
使用滑动窗口法解决:窗口左侧移动一位,窗口右侧持续向右移动,
保证窗口内无重复字符,遇到重复字符,窗口右侧即停止移动,窗口左侧向右移动一位,重复。
判断是否有重复字符:看使用Set集合内元素不允许重复的特性来判断。
*/
Set<Character> set = new HashSet<>();
int right = -1;
int ans = 0;
for(int i = 0; i < s.length(); ++i){
while(right + 1 < s.length() && !set.contains(s.charAt(right + 1))){
set.add(s.charAt(right + 1));
right ++;
}
ans = Math.max(ans,right - i + 1);
set.remove(s.charAt(i));
}
return ans;
}