/**
* 滑动窗口
*
* @param s
* @return
*/
public int lengthOfLongestSubstring(String s) {
int[] last = new int[128]; // 记录字符上一次出现的位置
Arrays.fill(last, -1);
int len = s.length(), ans = 0;
for (int left = 0, right = 0; right < len; right++) {
int c = s.charAt(right);
left = Math.max(left, last[c] + 1); // 更新窗口左侧位置
ans = Math.max(ans, right - left + 1); // 找到最大的窗口
last[c] = right; // 更新字符出现的位置
}
return ans;
}
/**
* 3. 无重复字符的最长子串
*/
lay.showTitle(3);
Solution3 sol3 = new Solution3();
String s3 = "abcabcbb";
System.out.println(sol3.lengthOfLongestSubstring(s3));