Анаграммы строк
"описание": "Даны две строки s
и t
, верните true
, если эти две строки являются анаграммами друг друга, в противном случае верните false
.
Анаграмма - это строка, которая содержит те же самые символы, что и другая строка, но порядок символов может быть другим.
Пример 1:
Вход: s = "racecar", t = "carrace" Выход: true
Пример 2:
Вход: s = "jar", t = "jam" Выход: false
Ограничения:
s
и t
состоят из строчных английских букв.
Рекомендуемая временная и пространственная сложность
Вам следует стремиться к решению со временной сложностью `O(n + m)` и пространственной сложностью `O(1)`, где `n` - длина строки `s`, а `m` - длина строки `t`.
Подсказка 1
Простое решение - отсортировать данные строки и проверить их на равенство. Это будет решение со сложностью `O(nlogn + mlogm)`. Хотя это решение приемлемо, можете ли вы придумать лучший способ без сортировки данных строк?
Подсказка 2
По определению анаграммы мы можем переставлять символы. Имеет ли значение порядок символов в обеих строках? Тогда что имеет значение?
Подсказка 3
Мы можем просто учитывать частоту каждого символа. Мы можем сделать это, используя две отдельные хеш-таблицы для двух строк. Затем мы можем проверить, равна ли частота каждого символа в строке `s` частоте в строке `t` и наоборот.