charTables数组记录字符对应的位置。
public class Solution { public int lengthOfLongestSubstring(String s) { if(null==s||0==s.length()) return 0; int charTables[]=new int[256]; //下标是哪个字符,内容是位置 Arrays.fill(charTables, -1); int start=0; int end=1; int max=1; charTables[s.charAt(0)]=0; while(end<s.length()) { if(charTables[s.charAt(end)]>=start) //发现存在重复情况 start=charTables[s.charAt(end)]+1; //那元素的位置后面 max=Math.max(max, end-start+1); //重新开始计算 charTables[s.charAt(end)]=end; end++; } return max; } }