import java.util.*; public class Solution{ public int lengthOfLongestSubstring(String s){ if(s == null){ return 0; }
char[] ch = s.toCharArray();
if(ch.length == 1) return 1;
int[] dp = new int[ch.length];
dp[0] = 1;
HashMap<Character,Integer> map = new HashMap<>();
map.put(ch[0],0);
int max = 1;
for(int i = 1;i < ch.length;i++){
if(!map.containsKey(ch[i])){
dp[i] = dp[i-1]+1;
}else{
dp[i] = Math.min(dp[i-1]+1,i - map.get(ch[i]));
}
map.put(ch[i],i);
max = Math.max(max,dp[i]);
}
return max;
}
}
// int[]dp=new int[array.length]; // int maxLength=1; // HashMap<Character, Integer>map=new HashMap<>(); // dp[0]=1; // map.put(array[0],0); // for(int i=1;i<array.length;i++){
// if(!map.containsKey(array[i])){ // dp[i]=dp[i-1]+1; // } // else{ // dp[i]=Math.min(dp[i-1]+1,i-map.get(array[i])); // } // map.put(array[i],i); // maxLength=Math.max(maxLength,dp[i]); // } // return maxLength; // } // }