public int lengthOfLongestSubstring(String s) {
char[] c = s.toCharArray();
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
int max = 0;
for(int start=0,end=0;end<c.length;end++){
if(map.containsKey(c[end])){
start = Math.max(start, map.get(c[end]));
}
max = Math.max(max, end-start+1);
map.put(c[end], end+1);
}
return max;
}
map.put(c[end], end+1)
:如果下次又出现了c[end]
,则从上一次c[end]
出现位置end
的下一个位置开始,防止窗口中字符重复.