题目
代码
最优解
class Solution {
public int lengthOfLongestSubstring(String s) {
int len = s.length();
int res = 0;//最长子串长度
int start = 0;
Map<Character, Integer> map = new HashMap<>();//key=字符,value=字符对应索引
for (int i = 0; i < len; i++) {
char ch = s.charAt(i);
if(map.containsKey(ch)){
//说明字符已经存在,重复了,将更新start索引(可理解为将原来的剔除)
start = Math.max(map.get(ch) + 1, start);
}
res = Math.max(res, i - start + 1);//更新最大长度
map.put(ch, i);//更新元素及其下标
}
return res;
}
}