Giả sử chúng ta có một đường dẫn Unix, trong danh sách các chuỗi, chúng ta phải tìm phiên bản đã giải quyết của nó. Như chúng ta đã biết trong Unix, ".." biểu thị thư mục trước đó và "." biểu thị ở lại trên thư mục hiện tại. Ở đây việc phân giải chỉ ra đánh giá của hai biểu tượng để chúng tôi nhận được thư mục cuối cùng mà chúng tôi hiện đang ở.
Vì vậy, nếu đầu vào là path =["usr", "..", "usr", ".", "Local", "etc", "foo"], thì đầu ra sẽ là ['usr', 'local', 'etc', 'foo'], vì phần đại diện cho "/usr/../usr/./local/etc" phân giải thành "/ usr / local / etc / foo"
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- s:=một danh sách mới
- đối với mỗi phần tử tôi trong đường dẫn, thực hiện
- nếu tôi giống với '..', thì
- nếu s không trống, thì
- xóa phần tử cuối cùng khỏi s
- nếu s không trống, thì
- ngược lại, khi tôi không giống với '.', thì
- chèn i vào cuối s
- nếu tôi giống với '..', thì
- trả lại s
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, path): s = [] for i in path: if i == '..': if len(s) >0: s.pop() elif i !='.': s.append(i) return s ob = Solution() print(ob.solve(["usr", "..", "usr", ".", "local", "etc", "foo"]))
Đầu vào
["usr", "..", "usr", ".", "local", "etc", "foo"]
Đầu ra
['usr', 'local', 'etc', 'foo']