Please find the error in my code
public int longestkSubstr(String s, int k) {
// code here
if(s.length()==0)
return 0;
int i=0,j=0;
int ans=-1;
Map<Character,Integer> map=new HashMap<>();
while(j<s.length()){
map.put(s.charAt(j),map.getOrDefault(s.charAt(i),0)+1);
if(map.size()<k)
j++;
else if(map.size()==k){
ans=Math.max(ans,j-i+1);
j++;
}
else if (map.size()>k){
while(map.size()>k){
map.put(s.charAt(i),map.get(s.charAt(i))-1);
if(map.get(s.charAt(i))==0)
map.remove(s.charAt(i));
i++;
} j++;}
}
return ans;`}
Runtime Error: Runtime ErrorException in thread "main" java.lang.NullPointerException at Solution.longestkSubstr(File.java:43)