public static boolean strstp11(String s, String t) {
char[] tmap = new char[256];
for (char c: t.toCharArray()) {
tmap[c]++;
}
int len = t.length();
int count = 0;
boolean isStart = true;
int start = 0;
for (int i = 0; i < s.length(); i++) {
if (--tmap[s.charAt(i)] >= 0) {
if (isStart) {
isStart = false;
start = i;
}
count++;
if (count == len) {
return true;
}
} else {
do {
if (tmap[s.charAt(start)]++>= 0) {
count--;
}
} while (s.charAt(start++)!=s.charAt(i));
if (start > i) {
isStart = true;
}
}
}
return false;
}