トピック
数十万の英単語を収めた英単語ライブラリ(配列)を与え、文字列を入力して、それが特定の単語の接頭辞であるかどうかを判定(または間違っているかどうかを判定)します。
一般的な考え
単語ライブラリを走査し、indexOf を使用して接頭辞を判断します。
時間計算量は O(n) を超えるため、indexOf の計算量を考慮する必要があります。
ハッシュテーブルのアイデア
ハッシュ テーブルは、次のような任意の言語で実装できる論理構造です。
- jsでオブジェクトまたはマップを使用する
- C言語での構造
- Javaのハッシュマップ
ハッシュ テーブルはキーによってクエリされ、時間計算量は O(1) です。
const obj = {
a: {
a: {
},
b: {
},
...
},
b: {
},
...
}
時間計算量は O(m) になります。ここで、m は単語の長さを表します。ただし、その代償として、英単語をそのようなハッシュ テーブルに変換する必要があり、ハッシュ テーブルを頻繁に移動する必要がないため、大きな問題はありません。