Для известных (и небольших) наборов допустимых букв (например, ASCII) используйте таблицу с количеством, связанным с каждой действительной буквой.Счетчик приращений первой строки, счетчик приращений второй строки.Наконец, переберите таблицу, чтобы увидеть, все ли числа равны нулю (строки - анаграммы) или существуют ненулевые значения (строки не являются анаграммами).Убедитесь, что все символы преобразованы в верхний или нижний регистр (и все они одинаковы) и пропущены пробелы.
Для большого набора допустимых букв, таких как Unicode, не используйте таблицу, а используйте хеш-таблицу,У него есть O (1) время для добавления, запроса и удаления и O (n) места.Буквы из счетчика приращения первой строки, буквы из счетчика приращения второй строки.Счетчик, который становится равным нулю, удаляется из хеш-таблицы.Строки являются анаграммами, если в конце хеш-таблица пуста.Кроме того, поиск прекращается с отрицательным результатом, как только любой счет становится отрицательным.
Вот подробное объяснение и реализация в C #: Проверка, если две строки являются анаграммами