各単語が辞書から取得されるように、文字列を単語に分割する必要があります。また、左から可能な限り長い単語が選択されていることを確認してください。したがって
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')
新しい再帰呼び出しでは、「as」が辞書から削除されているためです。私が書いた関数はこのリンクにあります。誰かがそれを調べて、これを解決するためのより良いアルゴリズムを見つけるのを手伝ってくれることを願っています。それ以外の場合は、既存のアルゴリズムの変更を提案してください。