class Solution {
// 为窗口内维护一个count的哈希表,先向右移动,如果某一个的cnt>1,那么左边向右移直到
// 新进元素的cnt重新变为1
// 将hashmap换成数组计数(假设字符范围是ASCII),时间从11->3ms
public int lengthOfLongestSubstring(String s) {
if(s==null||s.length()<1){
return 0;
}
int lo=0,hi=0;
int[] cnt=new int[180];
int max=1;
cnt[s.charAt(0)-0]++;
while(++hi<s.length()){
int c=cnt[s.charAt(hi)-0];
while(c>0){
cnt[s.charAt(lo)-0]--;
lo++;
c=cnt[s.charAt(hi)-0];
}
cnt[s.charAt(hi)-0]=1;
max=Math.max(max,hi-lo+1);
}
return max;
}
}