实现:java
public class Solution { public int lengthOfLongestSubstring(String s ) { int max =0; Map<Character,Integer> map= new HashMap<Character,Integer>(); char[]arr =s .toCharArray(); for(int i =0,j =0;j <s .length();j++){//设置两个指针,从左向右遍历 if(map .containsKey(arr[j])){//若是当前元素在map中,则表示有冲突。若是把当前元素加入子串也不会增长最大不一样元素数,因此统计当前的元素数 if(map .size()>max) max= map.size(); int index =map .get(arr [j ]);//找到map中形成冲突的元素 for(int x =i ;x <=index ;x ++){//从左侧的指针开始到index为止的元素从map中删除 map.remove( arr[ x]); } map.put( arr[ j], j); //把当前元素加入map中 i= index+1; //左侧指针指导index的右侧 } else{//若是不在map中,则将当前元素加入map中 map.put( arr[ j], j); } } return max >map .size()?max :map .size();//返回历史最大值与当前map元素中较大的值 } }