class Solution {
public int lengthOfLongestSubstring(String s) {
//创建一个map用于存放数据
HashMap<Character, Integer> map = new HashMap<>();
//最大值初始化
int max = 0;
//下标
int left = 0;
//如果传入的字符串为空就返回0
if (s.length() ==0){return 0;}
//循环体
for (int i = 0; i < s.length(); i++) {
//如果map里面有这个数值
if (map.get(s.charAt(i)) != null) {
//让left纪录上一次出现重复字符的下标 +1
//例如 abca left纪录的位置就是b的位置 而字符串将会从abc更新为bca
left = Math.max(left,map.get(s.charAt(i)) + 1);
}
//更新map里的数据
map.put(s.charAt(i),i);
// left纪录的是字符串的最左边 i是字符串的最右边 两者相减+1 就是字符串的长度
max = Math.max(max,i-left+1);
}
return max;
}
}