# Help required in problem Window String

I am working on this problem.

I have implemented my appraoch as given below. It is giving me partially correct answer. Can you please help. I have tried so many examples, not able to figure out the problem.

``````public class Solution {
public String minWindow(String A, String B) {

//hm contains the String B character's frequency
//horg denotes no. of distinct elements in String B
HashMap<Character, Integer> hm = new HashMap<>();
HashSet<Character> horg = new HashSet<>();
int m = B.length();
for(int i=0;i<m;i++){
hm.put(B.charAt(i), hm.getOrDefault(B.charAt(i),0)+1 );
}
//hm and horg is filled

int l = 0;
int r = 0;
int n = A.length();

int size = n;
String ans = "";

HashMap<Character, Integer> wind = new HashMap<>();
HashSet<Character> hs = new HashSet<>();
//wind contains the current window character frequency(only those present in B)

//hs will contains all characters in B that is appeared, (means lets say x in hs,
// we dont care if we encounter more no. of character as we h
//enough no. of character of x to be present in String B)

while(r<n){

//inrease the window
while(r<n && hs.size()<horg.size()){

char x = A.charAt(r);
if(hm.containsKey(x)){
wind.put(x, wind.getOrDefault(x,0)+1);
if(wind.get(x)==hm.get(x)){
}
}
r++;
}

//squeez the window
while(hs.size()==horg.size() ){

char y = A.charAt(l);
if(hm.containsKey(y)){

if(wind.get(y)==1){
wind.remove(y);
hs.remove(y);
}else{
wind.put(y, wind.get(y)-1 );
if(wind.get(y)<hm.get(y)){
hs.remove(y);
}
}

}

l++;
}

if(size>r-l){
size=r-l;
ans = A.substring(l-1,r);
}

}

return ans;
}

}

/*