package contests.contest30;
/**
* Created by sherxon on 4/29/17.
*/
public class PermutationinString {
public static void main(String[] args) {
System.out.println(checkInclusion("oaa", "eidbraoo"));
}
static boolean checkInclusion(String s1, String s2) {
if(s1.length() == 0 || s2.length() ==0)return false;
if(s2.length() < s1.length())return false;
int sum=0;
for(int k=0; k<s1.length(); k++){
sum+=s1.charAt(k);
}
char[] a=s2.toCharArray();
int n=s1.length();
int hash=0;
for(int k=0; k<s1.length(); k++){
hash+=s2.charAt(k);
}
int i=1;
for(; i<=a.length-n; i++){
if(hash == sum && check(s1, a, i-1)) return true;
hash=hash(a, hash, i, n);
System.out.println(hash + " " + a[i]);
}
return hash == sum && check(s1, a, i-1);
}
private static boolean check(String s1, char[] c, int i) {
int[] a=new int[26];
int[] b=new int[26];
for (int j = 0; j < s1.length(); j++) {
a[s1.charAt(j)-'a']++;
b[c[i+j]-'a']++;
}
for (int j = 0; j < a.length; j++) {
if(a[j]!=b[j])return false;
}
return true;
}
static int hash(char[] a, int old, int i, int n){
old-=a[i-1];
old+=a[i+n-1];
return old;
}
}