Step 1: 初期化とデータ構造
const anagramMap = new Map<string, string[]>();
解説: Map オブジェクトを使用してアナグラムをグループ化します。キーはソートされた文字列、値はアナグラムの配列です。
🗂️ Map構造の可視化
Map<string, string[]>
キー: ソートされた文字列 → 値: アナグラム配列
キー: ソートされた文字列 → 値: アナグラム配列
Step 2: 入力配列の処理
例: strs = ["eat","tea","tan","ate","nat","bat"]
📥 入力配列
eat
tea
tan
ate
nat
bat
Step 3: 各文字列の処理とソート
const sortedStr = str.split('').sort().join('');
🔄 文字列ソート過程
「処理過程を可視化」ボタンをクリックして開始してください
Step 4: Map への追加処理
if (!anagramMap.has(sortedStr)) { anagramMap.set(sortedStr, []); }
anagramMap.get(sortedStr).push(str);
🗺️ Map構築過程
可視化を開始すると、Mapの構築過程が表示されます
Step 5: 最終結果の生成
return Array.from(anagramMap.values());
📊 最終結果
処理完了後に最終結果が表示されます
⚡ 計算量分析
時間計算量: O(N × K log K)
- N: 文字列の数
- K: 最長文字列の長さ
- K log K: 各文字列のソート時間
空間計算量: O(N × K)
- Map に全文字列を格納
- ソートされたキーを保存
- 結果配列のメモリ使用量