Давайте предположим, что у нас есть словарь, ключами которого являются названия продуктов.
Пользователь может ввести строку с названием еды (например, "сырный пирог с банановым йогуртом и стейком"), и для простоты предположим, что все написано строчными буквами, и имя еды не появляется более одного раза встрока.
Какой самый эффективный способ выяснить, какие ключи из словаря появились в строке названия еды? Давайте предположим, что возможно, что никакой ключ не появляется вообще, и также возможно, что строка названия еды состоит только из ключей словаря.
Это для самообучения. Использование Suffix Trie кажется хорошим вариантом, но я не уверен, как его оптимизировать (поскольку в этом случае возможно несколько совпадений). Если для него есть хорошо известные теоремы или ссылки,Я был бы очень признателен.
PS. Спасибо за ответ, но единственная проблема в том, что название еды не обязательно должно быть длинным . Давайте подумаем о чем-то вроде этого.
"мягкое кофейное мороженое"
это длинная строка из 4 слов, но только 2 названия продуктов: мягкий кофе, ледкрем