На входе файл с N строк (может быть 10-100к и более)
Задача удалить неявные дубли по полному совпадению словоформы (слова, у которых изменен порядок слов, но не изменены никакие окончания и прочее, например, купить яблоко в москве | яблоко в москве купить)
Сделал вариант с перебором всех перестановок слов для всего массива, но работает такой вариант крайне долго (с файлом на 200к строк ~40 дней в 1 поток)
Была идея сделать через создание массива с массивами (разделить каждую строку по пробелу и отсортировать по алфавиту от А до Я + хеширование), но не смог это реализовать
Вопрос: как это можно реализовать наиболее быстрым способом в 1 поток?
p.s. дубли удалять не нужно, по индексу в массиве заменить на "дубль"
Сделал вариант с перебором всех перестановок слов для всего массива, но работает такой вариант крайне долго (с файлом на 200к строк ~40 дней в 1 поток)
Тебе не нужно делать полные перестановки.
Просто разделяй по пробелу и складывай в HashSet
но если я просто разделю по пробелу и занесу каждое слово в таблицу, то фраза "машина" будет дублем для фразы "машина в горах", потому что слово "машина" уже будет в таблице
мне бы как-то надо делать проверку целиком фраз, а не отдельных слов, потому что в строках на входе могут быть как предложения, так и однословники