Анаграммы (3)
Анаграммы
Условие
Слова называются анаграммами друг друга, если одно из них можно получить перестановкой букв в другом. Например, слово "eat" можно получить перестановкой букв слова "tea", поэтому эти слова являются анаграммами друг друга. Даны пары слов, проверьте для каждой из них, являются ли слова этой пары анаграммами друг друга.
Указание
Один из способов проверки того, являются ли слова анаграммами друг друга, заключается в следующем. Для каждого слова с помощью словаря подсчитаем, сколько раз в нем встречается каждая буква. Если для обоих слов эти словари равны (а это проверяется с помощью обычного оператора ==
), то слова являются анаграммами друг друга, в противном случае не являются.
При этом построение такого словаря по слову удобно вынести в отдельную функцию BuildCharCounters
.
Реализуйте функцию AreAnagrams
, принимающую две строки и возвращающую true
, если строки являются анаграммами, и false
, если не являются. Гарантируется, что строки содержат только латинские символы. Проверка не должна зависеть от регистра.
Примеры
AreAnagrams("eat", "tea"); // true
AreAnagrams("find", "search"); // false
AreAnagrams("master", "stream"); // true
AreAnagrams("eat", "Tea"); // true
Как тестировать решение локально
Собрать программу с помощью cmake
и запустить ctest
:
mkdir build; cd build
cmake ..; cmake --build .
ctest -V