#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
bool IsUnique (const string & str) {
int existing_chars[8] = {0,0,0,0,0,0,0,0};
for(auto c : str) {
if(existing_chars[c/32]&(1<<(c%32))) {
return false;
} else {
existing_chars[c/32] |= 1<<(c%32) ;
}
}
return true;
}
bool IsPermutation (const string& str1, const string str2) {
unordered_map<char,int> char_map;
if(str1.length() != str2.length()) {
return false;
}
for(auto c : str1) {
char_map[c]++;
}
for(auto c : str2) {
char_map[c]--;
if(char_map[c] < 0) {
return false;
}
}
return true;
}
int main() {
cout<< IsPermutation("","") << IsPermutation("m","mm") << IsPermutation("mum","mmu") << IsPermutation("hello","olleh") << IsPermutation("abcdefghijk","kjhifgcabed");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgSXNVbmlxdWUgKGNvbnN0IHN0cmluZyAmIHN0cikgewoJaW50IGV4aXN0aW5nX2NoYXJzWzhdID0gezAsMCwwLDAsMCwwLDAsMH07Cglmb3IoYXV0byBjIDogc3RyKSB7CgkJaWYoZXhpc3RpbmdfY2hhcnNbYy8zMl0mKDE8PChjJTMyKSkpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0gZWxzZSB7CgkJCWV4aXN0aW5nX2NoYXJzW2MvMzJdIHw9IDE8PChjJTMyKSA7CgkJfQoJfQoJcmV0dXJuIHRydWU7Cn0KCmJvb2wgSXNQZXJtdXRhdGlvbiAoY29uc3Qgc3RyaW5nJiBzdHIxLCBjb25zdCBzdHJpbmcgc3RyMikgewoJdW5vcmRlcmVkX21hcDxjaGFyLGludD4gY2hhcl9tYXA7CglpZihzdHIxLmxlbmd0aCgpICE9IHN0cjIubGVuZ3RoKCkpIHsKCQlyZXR1cm4gZmFsc2U7Cgl9Cglmb3IoYXV0byBjIDogc3RyMSkgewoJCWNoYXJfbWFwW2NdKys7Cgl9Cglmb3IoYXV0byBjIDogc3RyMikgewoJCWNoYXJfbWFwW2NdLS07CgkJaWYoY2hhcl9tYXBbY10gPCAwKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CglyZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7Cgljb3V0PDwgSXNQZXJtdXRhdGlvbigiIiwiIikgPDwgSXNQZXJtdXRhdGlvbigibSIsIm1tIikgPDwgSXNQZXJtdXRhdGlvbigibXVtIiwibW11IikgPDwgSXNQZXJtdXRhdGlvbigiaGVsbG8iLCJvbGxlaCIpIDw8IElzUGVybXV0YXRpb24oImFiY2RlZmdoaWprIiwia2poaWZnY2FiZWQiKTsKCXJldHVybiAwOwp9