У меня есть строка и еще один текстовый файл, содержащий список строк.
Мы называем 2 строки «строками братства», когда они полностью совпадают после сортировки по алфавиту.
Например, «abc» и «cba» будут отсортированы в «abc» и «abc», поэтому исходные два являются братскими. А вот "abc" и "aaa" - нет.
Итак, есть ли эффективный способ выбрать все строки братства из текстового файла в соответствии с одной предоставленной строкой?
Например, у нас есть "abc"
и текстовый файл, в котором написано так:
abc
cba
acb
lalala
тогда "abc"
, "cba"
, "acb"
являются ответами.
Конечно, «сортировать и сравнивать» — хорошая попытка, но под «эффективностью» я подразумеваю, если есть способ, мы можем определить, является ли строка-кандидат братством исходной после обработки за один проход.
Это самый действенный способ, я считаю. В конце концов, вы не можете сказать ответ, даже не прочитав строки-кандидаты. Для сортировки в большинстве случаев нам нужно сделать более 1 прохода к строке-кандидату. Таким образом, хеш-таблица может быть хорошим решением, но я понятия не имею, какую хеш-функцию выбрать.