Danh sách

Chuẩn hóa đường dẫn Unix (Simplify Path)

Trung bình
Ngăn Xếp & Hàng Đợi (Stack & Queue) 1000ms 128MB

Cho một đường dẫn tuyệt đối kiểu Unix path (bắt đầu bằng dấu /). Hãy chuẩn hóa nó về đường dẫn chuẩn tắc (canonical path).

Quy tắc:

  • Một dấu chấm . nghĩa là thư mục hiện tại.
  • Hai dấu chấm .. nghĩa là chuyển lên thư mục cha trước đó.
  • Nhiều dấu xuyệt // liên tiếp coi như một dấu xuyệt /.
  • Đường dẫn kết quả luôn bắt đầu bằng / và không kết thúc bằng / (trừ khi là thư mục gốc).

Ví dụ 1: path = "/home//foo/" -> "/home/foo"
Ví dụ 2: path = "/a/./b/../../c/" -> "/c"

Định Dạng Đầu Vào (Input)
Một dòng chứa chuỗi path
Định Dạng Đầu Ra (Output)
Chuỗi đường dẫn chuẩn tắc
Ràng Buộc (Constraints)
  • 1 <= path.length <= 3000
Ví Dụ Kiểm Thử Mẫu
Ví dụ 1:
Input:
"/home//foo/"
Output:
"/home/foo"
Giải thích: Gộp dấu //
Ví dụ 2:
Input:
"/a/./b/../../c/"
Output:
"/c"
Giải thích: Lùi cấp cha bằng ..
Gợi ý được sắp xếp theo cấp độ tiến dần. Hãy mở từng gợi ý khi bạn thực sự cần thêm định hướng.

Kỹ thuật Stack Tách Thư Mục O(n)

Tách chuỗi bằng dấu /. Duyệt các phần: gặp .. thì pop Stack, gặp tên thư mục hợp lệ thì push vào Stack.

Vui lòng đăng nhập

Đăng nhập tài khoản học viên để xem lịch sử nộp bài của bạn.

Đăng nhập
Ctrl + Enter: Chạy thử
Dữ liệu đầu vào (Input):
"/home//foo/"
Kết quả kỳ vọng (Expected Output):
"/home/foo"
Dữ liệu đầu vào (Input):
"/a/./b/../../c/"
Kết quả kỳ vọng (Expected Output):
"/c"
Nhập STDIN của bạn (Mỗi dòng một tham số):

Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.

Đang gửi mã và thực thi trên Sandbox Engine...
Nhấn Ctrl+Enter để chạy

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học