2011-02-10 15 views
3

私は、あまり単純ではない簡単な代替暗号文の鍵を推測しています。私が鍵の正しさを評価する規則は、推定復号化における英単語の数です。辞書を使って推測する単語

文字列の英語の数を確認できるツールはjavaにありますか?たとえば、 "thefoitedstateswasat" - > 4 words "thefortedxyzstateswasathat" - > 5ワードです。

私は単語リストを読み込み、HashSetを辞書として使用しました。単語間のスペースがテキストに含まれているのを知らないので、単純な辞書を使って単語を検証することはできません。

ありがとうございました。

+0

有効な英単語の数は本当に良い指標ではありません。たとえば、「tintint」には「リズム」よりも有効な単語が含まれています。 – hauntsaninja

答えて

1

申し訳ありません私は新しく、まだコメントする担当者がいません。

しかし、チェックやパーミュテーションの数が非常に多いので、コードは非常に遅くならないでしょうか?

私はループのためにネストされた(n-1)個の単語を使用することによって、あなたのやりとりを強制する必要があると思います。次に、各部分文字列の辞書を検索します。

+1

@ user607455-はい、それについて考えると、文字列をサブワードに分割する方法がいくつあるかを尋ねています。これは、最悪の場合、文字列を部分文字列に分割する方法をいくつか質問することと同じです。指数関数的に多くの方法があります。実際のランタイムはそれほど悪くはありません。なぜなら、現在考慮されていることが単語ではないことが判明した場合、再帰が迅速に停止するからです。 – templatetypedef

+0

@templatetypedef再帰は、単語に遭遇したときに停止することを意味するものではありません。有効な英語単語が多い限り、ゴミが中央にあるかどうかは関係ありません。 – hauntsaninja

+0

@ hauntsaninja-申し訳ありませんが、*現行の再帰呼び出しは、*現在の単語断片*が無効な場合はいつでも停止します。あなたは絶対に正しいです。あなたが悪い可能性を見つけたら、止めたくありません! – templatetypedef

0

確かに、あなたのキーの精度をテストする良い方法がありますか?

しかし、それはポイントではないですが、ここで私がやるだろうと何:

は、私は、文字列の先頭から始まる再帰的な方法を持っていると思います「quackdogsomethinggodknowswhat」

を使用して、私は呼びたいです対象文字列が始まるすべての単語(この場合は「qua」)、および単語を含まない文字列(quackの場合は「dogsomethinggodknowswhat」)を含む「quack」の再帰的メソッド。より大きい値を返します。1 +すべてのメソッド呼び出しから返される最大値。または、0 +インデックス1から始まる文字列のメソッド呼び出し( "uackdogsomethinggodknowswhat")。

単語リストを何らかの種類のツリーに入れておくと、これはおそらく最も効果的です。

擬似コードが必要な場合は、尋ねてください。

関連する問題