/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class solution {
public static void main
(String[] args
){ System.
out.
println(isAnagram
(s,t
)); }
defaultHashMap
<Character, Integer
> countS
= new defaultHashMap
<>(0); defaultHashMap
<Character, Integer
> countT
= new defaultHashMap
<>(0); if (s.length() != t.length()){
return false;
}
// count frequencies of characters
for (int i=0; i < s.length(); i++){
countS.put(s.charAt(i), countS.get(s.charAt(i)) + 1);
countT.put(t.charAt(i), countT.get(t.charAt(i)) + 1);
}
// System.out.println(countS.entrySet());
// System.out.println(countT.entrySet());
// compare to map
for (Map.
Entry<Character, Integer
> entry
: countT.
entrySet()){ if (entry.getValue() != countS.get(entry.getKey())){
return false;
}
}
return true;
}
}
/*
define a defaultHashMap class extending hashmap
*/
class defaultHashMap <K,V> extends HashMap<K,V> {
protected V defaultValue;
public defaultHashMap(V defaultValue) {
this.defaultValue = defaultValue;
}
@Override
return containsKey(k) ? super.get(k) : defaultValue;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3Mgc29sdXRpb24gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CiAgICBTdHJpbmcgcyA9ICJhbmZlZmVnIjsgICAgLy8gdHJ1ZQogICAgU3RyaW5nIHQgPSAiZmVnYWZlbiI7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oaXNBbmFncmFtKHMsdCkpOwogICAgfQogICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzQW5hZ3JhbShTdHJpbmcgcywgU3RyaW5nIHQpIHsKICAgICAgICBkZWZhdWx0SGFzaE1hcDxDaGFyYWN0ZXIsIEludGVnZXI+IGNvdW50UyA9IG5ldyBkZWZhdWx0SGFzaE1hcDw+KDApOwogICAgICAgIGRlZmF1bHRIYXNoTWFwPENoYXJhY3RlciwgSW50ZWdlcj4gY291bnRUID0gbmV3IGRlZmF1bHRIYXNoTWFwPD4oMCk7CiAgICAgICAgaWYgKHMubGVuZ3RoKCkgIT0gdC5sZW5ndGgoKSl7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgLy8gY291bnQgZnJlcXVlbmNpZXMgb2YgY2hhcmFjdGVycyAKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzLmxlbmd0aCgpOyBpKyspewogICAgICAgICAgICBjb3VudFMucHV0KHMuY2hhckF0KGkpLCBjb3VudFMuZ2V0KHMuY2hhckF0KGkpKSArIDEpOwogICAgICAgICAgICBjb3VudFQucHV0KHQuY2hhckF0KGkpLCBjb3VudFQuZ2V0KHQuY2hhckF0KGkpKSArIDEpOwogICAgICAgIH0KLy8gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudFMuZW50cnlTZXQoKSk7Ci8vICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY291bnRULmVudHJ5U2V0KCkpOwoKICAgICAgICAvLyBjb21wYXJlIHRvIG1hcAogICAgICAgIGZvciAoTWFwLkVudHJ5PENoYXJhY3RlciwgSW50ZWdlcj4gZW50cnkgOiBjb3VudFQuZW50cnlTZXQoKSl7CiAgICAgICAgICAgIGlmIChlbnRyeS5nZXRWYWx1ZSgpICE9IGNvdW50Uy5nZXQoZW50cnkuZ2V0S2V5KCkpKXsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQovKgpkZWZpbmUgYSBkZWZhdWx0SGFzaE1hcCBjbGFzcyBleHRlbmRpbmcgaGFzaG1hcAoqLwpjbGFzcyBkZWZhdWx0SGFzaE1hcCA8SyxWPiBleHRlbmRzIEhhc2hNYXA8SyxWPiB7CiAgICBwcm90ZWN0ZWQgViBkZWZhdWx0VmFsdWU7CiAgICBwdWJsaWMgZGVmYXVsdEhhc2hNYXAoViBkZWZhdWx0VmFsdWUpIHsKICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKICAgIH0KICAgIEBPdmVycmlkZQogICAgcHVibGljIFYgZ2V0KE9iamVjdCBrKSB7CiAgICAgICAgcmV0dXJuIGNvbnRhaW5zS2V5KGspID8gc3VwZXIuZ2V0KGspIDogZGVmYXVsdFZhbHVlOwogICAgfQoKfQ==