public int lengthOfLongestSubstring(String s) { //用哈希表存储 int len = s.length(); if(len<=1) return len; char[] c = s.toCharArray(); HashMap<Character,Integer> map = new HashMap<>(); map.put(c[0],0); int max_len = 1; int i = 0,j = 1; while(j<len){ if(map.containsKey(c[j])){ int index = map.get(c[j]); max_len = Math.max(max_len,j-i); for(int k = i;k<=index;k++){ map.remove(c[k]); } i = index+1; map.put(c[j],j); j++; }else{ map.put(c[j],j); j++; } } return Math.max(max_len,j-i); }
public int lengthOfLongestSubstring(String s) { int[] alpha = new int[128]; for(int i=0;i<128;i++){ alpha[i] = -1; } int left = 0; int ans = 0; for(int i=0;i<s.length();i++){ int temp = s.charAt(i); if(alpha[temp] <= left){ ans = Math.max(i - left+1,ans); }else{ left = alpha[temp]; } alpha[temp] = i+1; } return ans; }