Мне нужно разбить строку на слова, чтобы каждое слово было из словаря. Также убедитесь, что выбрано самое длинное слово слева. СледовательноСегментация текста: Алгоритм для ввода ввода с самыми длинными словами из словаря
thisisinsane => this is insane (correct as longest possible word from left)
thisisinsane => this is in sane(wrong)
Assuming 'this', 'is', 'in', 'insane' are all words in the dictionary.
мне удалось решить эту проблему путем обхода с конца строки к началу сопрягая самое длинное слово можно. Но проблема начала кадрирование нас для подобных проблем ..
shareasale => share as ale(wrong as 'ale' not in the dictionary)
shareasale => share a sale(correct)
Assuming 'share', 'a', 'sale' are all words in the dictionary unlike 'ale'.
Я попытался решить эту проблему путем удаления действительных сегментов, найденных до встречи ошибки т.е.
shareasale => 'share' and 'as' (error = 'ale')
и удалить их один раз из словаря и затем решить проблему. Таким образом,
shareasale => no valid segments when share is removed
shareasale => share a sale (when 'as' is removed from the dictionary.
Таким образом, мне тоже удалось решить эту проблему. Но тогда я не смог решить эту проблему
asignas => 'as' (error = 'ignas')
Мое решение затем удалить «как» из словаря и попытаться решить
asignas => 'a' 'sign' (error = 'as')
Поскольку в новом рекурсивном вызове «как» было удалено из словаря. Функция, которую я написал, - in this link. Я надеюсь, что кто-то сможет пройти через это и помочь мне найти лучший алгоритм для решения этой проблемы, предлагая модификацию моего существующего алгоритма.
Спасибо @Jakub! Несмотря на то, что ответ Photon решил мою проблему, этот ответ помог мне лучше понять решение с его ясным объяснением. –