Недавно меня попросили разработать алгоритм, который проверяет, являются ли две строки анаграммами друг друга. Моей целью было минимизировать пространственную и временную сложность, поэтому я придумал следующий алгоритм:
- Создайте массив из 26 элементов, каждый из которых инициализирован нулем.
- Пройдите по первой строке и для каждого символа увеличьте соответствующий элемент массива. к этому символу.
- Обходите вторую строку и для каждого символа уменьшите элемент массива, соответствующий этому символу.
- Просмотрите массив. Если все элементы равны 0, две строки являются анаграммами.
Однако временная сложность этого алгоритма составляет O (n), и я не могу придумать алгоритм с меньшей сложностью. Кто-нибудь знает об одном?
задан templatetypedef 20 August 2011 в 20:44
поделиться