参照大佬代码做的解读 有误望纠正
public static int method2(String s){
// 用来记录上一次出现的位置
int[] ints = new int[128];
// for循环统一赋值为-1,因为下标从0开始
for (int i = 0; i < ints.length; i++) {
ints[i] = -1;
}
// 滑动窗口开始的下标
int start = 0;
// 滑动窗口的长度
int res = 0;
for (int i = 0; i < s.length(); i++) {
// 获取到字符串对应下标字符的ASCII码 充当之前定义的数组下标
int index = s.charAt(i);
// 下方第最后一行会记录当前字符出现位置,在这里用Math.max做取舍
// 比如该字符首次出现,肯定是-1,那么ints[index]+1==0(+1是因为下标从0开始),开始就会取start的值为当前滑动窗口的起始位置
start = Math.max(start,ints[index]+1);
// 滑动窗口的长度,i为当前字符所在下标,start为当前滑动窗口其实位置,所有i-start+1就是窗口当前长度。
// 如果没有之前的长,就忽略,有则替换
res = Math.max(res,i-start+1);
// 记录当前字符的下标
ints[index] = i;
}
return res;
}