Please check my solution

       public static String window(String str, String pat){
  	    int n1=str.length();
	  int n2=pat.length();
	 if(n2>n1){
		return "No String";
	}
	 HashMap<Character,Integer> strhm=new  
     HashMap<Character,Integer>();
	
	HashMap<Character,Integer> pathm=new 
     HashMap<Character,Integer>();
	for(int i=0;i<n2;i++){
		char c=pat.charAt(i);
		if(pathm.containsKey(c)){
			int temp=pathm.get(c);
			pathm.put(c,temp+1);

		}
		else{
			pathm.put(c,1);
		}
	}

int start=0, start_index=-1, min_len=Integer.MAX_VALUE, count=0;
	for(int i=0;i<n1;i++){
		char c=str.charAt(i);
	
		if(strhm.containsKey(c)){
			
			int temp=strhm.get(c);
			strhm.put(c,temp+1);

		}
		else{
			strhm.put(c,1);
		}
		if(pathm.containsKey(c)&&strhm.get(c)<=pathm.get(c)){
			count++;
		}
		if(count==n2){

			while(!pathm.containsKey(str.charAt(start))||pathm.containsKey(str.charAt(start))&&strhm.get(str.charAt(start))>pathm.get(str.charAt(start))){

			if(pathm.containsKey(str.charAt(start))&&strhm.get(str.charAt(start))>pathm.get(str.charAt(start))){
				int tval=strhm.get(str.charAt(start));
				strhm.put(str.charAt(start),tval-1);
				

			}
				start++;
			}
			int len_win=i-start+1;

			if(min_len>len_win){
				min_len=len_win;
				start_index=start;
			}



		}



	}
	if(start_index==-1){
		return "No String";
	}
	else{
		return str.substring(start_index,min_len+start_index+1);
	}

}