import java.util.*;
public class Solution {
    public int lengthOfLongestSubstring (String s) {
        int maxLength = 1;
        if(s.length()<2){
            return s.length();
        }
        int left = 0;
        int right = 1;
        HashSet<Character> set = new HashSet<>();
        set.add(s.charAt(left));
        while(right<s.length()){
            if(!set.contains(s.charAt(right))){
                set.add(s.charAt(right));
                maxLength = Math.max(maxLength,set.size());
            }else{
                while(left<right && s.charAt(left)!=s.charAt(right)){
                    set.remove(s.charAt(left));
                    left++;
                }
                left++;
            }
            right++;
        }
        return maxLength;
    }
}