-1

可能であれば、Python に入力された文字の組み合わせをループし、その組み合わせにすべての文字が含まれる一連の単語を返す最も効率的な方法を見つけたいと考えています。

例:

ユーザーが ABCD E と入力したとします。目標は、すべての文字を含む最小数の単語を見つけることです。この場合、最適なソリューションは、優先順位で次のようになります。

  1. 5文字すべてを含む1つの単語
  2. 5文字すべてを含む2つの単語. (4文字の単語 + 1文字の単語、または3文字の単語 + 2文字の単語にすることができます。違いはありません)

....など

一致しない場合は、n-1 文字などで 1 に戻ります。

「文字の組み合わせ」(つまり単語)が辞書にあるかどうかを確認する機能があります。

def is_in_lib(word):
    if word in lib:
        return word
    return False

理想的な答えには、それらの文字の組み合わせを見つけて、それらすべてを検索することは含まれません。辞書を探すのは非常にコストがかかるので、辞書を探す時間も最適化できるものが必要です

重要な編集: 順序が重要であり、継続性が必要です。つまり、ユーザーが「H」、「T」、「A」を入力すると、「HAT」を構築できません。

実際の例: 入力が次の場合: T - H - G - R - A - C - E - K - B - Y - E " 出力は "Grace" と "Bye" でなければなりません

4

2 に答える 2

0

入力文字から文字列/リストを作成し、単語ライブラリ内のすべての単語に対してそれらを繰り返すことができます。

    inputstring='abcde'
    for i in lib:
            is_okay=True
            for j in inputstring:
                    if i.find(j)=-1:
                            is_okay=False
            if is_okay:
                    return i

他のケース (3 ~ 2 文字の 2 つの単語) は再帰的に実装できると思いますが、効率的ではありません。

于 2013-06-16T15:27:33.417 に答える