🔤 Group Anagrams Algorithm Analysis

TypeScript実装の詳細解析と可視化

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 に全文字列を格納
  • ソートされたキーを保存
  • 結果配列のメモリ使用量