Share my neat java solution
public String minWindow(String S, String T) {\n        if(S==null||S.isEmpty()||T==null||T.isEmpty()) return "";\n        int i=0, j=0;\n        int[] Tmap=new 
    public String minWindow(String S, String T) {\n        if(S==null||S.isEmpty()||T==null||T.isEmpty()) return "";\n        int i=0, j=0;\n        int[] Tmap=new int[256];\n        int[] Smap=new int[256];\n        for(int k=0; k< T.length(); k++){\n            Tmap[T.charAt(k)]++;\n        }\n        int found=0;\n        int length=Integer.MAX_VALUE;\n        String res="";\n        while(j<S.length()){\n            if(found<T.length()){\n                if(Tmap[S.charAt(j)]>0){\n                    Smap[S.charAt(j)]++;\n                    if(Smap[S.charAt(j)]<=Tmap[S.charAt(j)]){\n                        found++;\n                    }\n                }\n                j++;\n            }\n            while(found==T.length()){\n                if(j-i<length){\n                    length=j-i; res=S.substring(i,j);\n                }\n                if(Tmap[S.charAt(i)]>0){\n                    Smap[S.charAt(i)]--;\n                    if(Smap[S.charAt(i)]<Tmap[S.charAt(i)]){\n                        found--;\n                    }\n                }\n                i++;\n            }\n        }\n        return res;\n    }
['Java']