私のプログラムには、テキスト(文字列)を出力するアルゴリズムが含まれています。最終的には、最も発生した単語を印刷したいと思います。ただし、これを行う前に、データ構造に格納する必要があります。それで、文字列を格納して最も頻繁な要素を取得できるようにするのに最適な(簡単で効率的な)データ構造はどれか疑問に思いましたか?ライブラリは使いたくない。ありがとう
1957 次
4 に答える
3
どのデータ構造もこれを正確に行うとは思いませんが、これが私が行う方法です。
各単語のaMap<String, Integer>
を検出された回数に維持し、マップを更新するときに、保存されている最大数に対応する文字列を追跡します。例えば:
String maxWord = null;
Integer maxCount = -1;
Map<String, Integer> wordCount = new HashMap<String, Integer>();
for (String str : getMyProgramOutput()) {
if (!wordCount.containsKey(str)) { wordCount.put(str, 0); }
int count = wordCount.get(str) + 1;
if (count > maxCount) {
maxWord = str;
maxCount = count;
}
wordCount.put(str, count);
}
于 2013-01-29T23:41:00.787 に答える
1
String
各ノードにとが含まれる最大ヒープを構築してみませんかinteger_occurrence
。最も頻繁に使用される単語を取得するには、ヒープのルートを取得します
于 2013-01-29T23:47:19.573 に答える
1
を作成しますMap<String, Integer>
。String
増分を入力するたびにInteger
(独自のMutableInteger
クラスを作成する必要がある場合があります。検索が終了したら(または実行カウントを維持して)
于 2013-01-29T23:39:33.767 に答える
0
DBで辞書を使用することを検討することをお勧めします。このようなデータは通常、システムの再起動後に失われないように、物理メディアに保持する必要があるためです。この場合、辞書が役立ちます。あなたがする必要があるのは、頻度や位置などの情報を保存するための辞書テーブルと他のテーブルを設定することだけです。
于 2013-01-30T01:01:03.117 に答える