İçeriğe atla
ΣDSA Patterns
Menü
Dil

Yığın ile Ayrıştırma

Rehber 2 / 6 · Yol 2 / 6

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

Simplify Path

Problem (yeniden ifade)

Mutlak bir Unix yolunu sadeleştirilmiş kanonik forma çevir (., .. veya gereksiz / olmasın).

Sezgi

/ ile böl. Yığın gerçek segmentleri tutar; .. pop eder; boş ve . yok sayılır.

Yaklaşımlar

Segment yığını

Tested only
Time O(n)Space O(n)

Fikir. Her jetonu soldan sağa işle; tek bir baştaki / ile yeniden birleştir.

Adım adım. “/a/./b/../../c/” → yığın [“c”] ile biter → “/c”.

Ödünleşimler. Kök /.. için yığın boşken pop no-op olduğundan / kalır.

Solution
export function simplifyPath(path: string): string {
  const stack: string[] = [];
  for (const part of path.split("/")) {
    if (part === "" || part === ".") continue;
    if (part === "..") {
      if (stack.length) stack.pop();
    } else {
      stack.push(part);
    }
  }
  return "/" + stack.join("/");
}
export function simplifyPath(path: string): string {
  const stack: string[] = [];
  for (const part of path.split("/")) {
    if (part === "" || part === ".") continue;
    if (part === "..") {
      if (stack.length) stack.pop();
    } else {
      stack.push(part);
    }
  }
  return "/" + stack.join("/");
}

Şablon bağlantısı

İç içe / yol yapısının yığın ile parse edilmesi.

Yansıma