#include #include #include #include "hash_table.h" bool anagram(const char *s1, const char *s2) { HashTable ht = HashTableNew(); for (int i = 0; s1[i] != '\0'; i++) { if (!HashTableContains(ht, s1[i])) { HashTableInsert(ht, s1[i], 1); } else { int val = HashTableGet(ht, s1[i]); HashTableInsert(ht, s1[i], val + 1); } } for (int i = 0; s2[i] != '\0'; i++) { if (!HashTableContains(ht, s2[i])) { return false; } else { int val = HashTableGet(ht, s2[i]); HashTableInsert(ht, s2[i], val - 1); } } for (int i = 0; s1[i] != '\0'; i++) { if (HashTableGet(ht, s1[i]) != 0) { return false; } } return true; } int main(void) { printf("%d\n", anagram("abcde", "edcba")); // 1 printf("%d\n", anagram("abcde", "fdcba")); // 0 printf("%d\n", anagram("abcde", "abcdef")); // 0 printf("%d\n", anagram("aaabb", "ababa")); // 1 printf("%d\n", anagram("aaabb", "babab")); // 0 }