Skip to main content
LeetCode 71, Medium. Topics: String, Stack. View on LeetCode. Generate this problem as a practice environment: tested reference solution, 18 parametrized pytest cases, and a playground notebook:

Problem

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. The 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.
The simplified canonical path should follow these 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

Explanation: The trailing slash should be removed.
Explanation: Multiple consecutive slashes are replaced by a single one.
Explanation: A double period ".." refers to the directory up a level (the parent directory).
Explanation: Going one level up from the root directory is not possible.
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.

Solution

Reference implementation from solution.py on GitHub, full suite in test_solution.py:

Complexity

Tags

NeetCode 250, NeetCode All.
Last modified on August 25, 2026