Size: 2136 bytes.


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
# Simplify Path

See
[Leetcode 71](https://leetcode.com/problems/simplify-path/description/).

You are given an _absolute_ path for a Unix-style file
system, which always begins with a slash `'/'`.  
Your task is to transform this absolute path into its
**simplified canonical path**.

---

## Rules of a Unix-style file system are as follows:

- A single period `'.'` represents the current directory.
- A double period `'..'` represents the previous/parent
  directory.
- Multiple consecutive slashes such as `'//'` and `'///'`
  are treated as a single slash `'/'`.
- Any sequence of periods that does not match the rules
  above should be treated as a valid directory or file
  name.  
  For example, `'...'` and `'....'` are valid directory or
  file names.

---

## Simplified canonical path rules

- The path must start with a single slash `'/'`.
- Directories within the path must be separated by exactly
  one slash `'/'`.
- The path must not end with a slash `'/'`, unless it is the
  root directory.
- The path must not have any single or double periods (`'.'`
  and `'..'`) used to denote current or parent directories.

Return the simplified canonical path.

---

## Examples

**Example 1**

```
Input: path = "/home/"
Output: "/home"
```

Explanation: The trailing slash should be removed.

---

**Example 2**

```
Input: path = "/home//foo/"
Output: "/home/foo"
```

Explanation: Multiple consecutive slashes are replaced by a
single one.

---

**Example 3**

```
Input: path = "/home/user/Documents/../Pictures"
Output: "/home/user/Pictures"
```

Explanation: A double period "`..`" refers to the directory
up a level (the parent directory).

---

**Example 4**

```
Input: path = "/../"
Output: "/"
```

Explanation: Going one level up from the root directory is
not possible.

---

**Example 5**

> **Input**: path = "/.../a/../b/c/../d/./" **Output**:
> "/.../b/d" **Explanation**: "`...`" is a valid name for a
> directory in this problem.

---

## Constraints

- `1 <= path.length <= 3000`
- `path` consists of English letters, digits, period `'.'`,
  slash `'/'`, or `'_'`.
- `path` is a valid absolute Unix path.
v0 (commit) © 2025 @p13i.io | Load balancer proxied to: cs-code-viewer-3:8080 in 4ms.