フック語は、先頭または末尾に1文字を追加して新しい単語を作成できる単語です。単語のリストに「フック単語」を見つける効率的な方法は?
私はかなり大きな単語リスト(約170k)を持っています。私は5つのランダムフック単語を選択したいと思います。問題は、私が使っている方法が非常に遅いことです。以下を参照してください:
Random rnd = new Random();
var hookBases = (from aw in allWords //allWords is a List<string>
from aw2 in allWords
where aw2.Contains(aw)
&& aw2.Length == aw.Length + 1
&& aw[0] == 'c'
select aw).OrderBy(t => rnd.Next()).Take(5);
私はあきらめて、それを殺す前に、それが数分間スピンhookBase
から何かをアクセスしようとします。
誰も私がこれをやろうとしている間違いを見ることができますか?もっと効率的な提案はありますか?
速いです。ありがとう! –
@AbeMiessler:重複を避けるために「Distinct」を追加しました。 –
おそらくコレクションに非常に多くのアイテムがあるので、LINQを使ってLINQを使用したくないでしょう。そのオーバーヘッドは増加し、理想的ではありません。 –