import java.util.HashSet;
import java.util.Set;
//给定一个字符串,找出不含有重复字符的最长子串的长度。
//示例 1:
//输入: "abcabcbb"
//输出: 3
//解释: 无重复字符的最长子串是 "abc",其长度为 3。
//示例 2:
//
//输入: "bbbbb"
//输出: 1
//解释: 无重复字符的最长子串是 "b",其长度为 1。
//示例 3:
//
//输入: "pwwkew"
//输出: 3
//解释: 无重复字符的最长子串是 "wke",其长度为 3。
//请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。
public class LeetCode3 {
public static void main(String[] args) {
LeetCode3 L1 = new LeetCode3();
String s = "wwkpq";
System.out.println(s.length());
System.out.println(L1.lengthOfLongestSubstring(s));
}
public int lengthOfLongestSubstring(String s) {
Set<Character> s1 = new HashSet<>();
int distance=0, i=0, j=0;
int len = s.length();
while(i<len && j < len){
if(!s1.contains(s.charAt(i))){
s1.add(s.charAt(i));
i++;
//Calculate length
distance=(distance > i-j)?distance:i-j;
}else {
s1.remove(s.charAt(j));
j++;
}
}
return distance;
}
}