Mediumstack-parsing
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 onlyTime 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
- Bu problemi 90 saniye içinde hangi kalıp ele verdi?
- Standart şablondan ne değişti?
- Mevcut çözümü ne bozar?