문자열 목록에서 Unix 경로가 있다고 가정하고 해결된 버전을 찾아야 합니다. Unix에서 알 수 있듯이 ".."는 이전 디렉터리를 나타내고 "."는 이전 디렉터리를 나타냅니다. 현재 디렉토리에 있음을 나타냅니다. 여기서 해결은 현재 있는 최종 디렉토리를 얻기 위해 두 기호를 평가하는 것을 나타냅니다.
따라서 입력이 path =["usr", "..", "usr", ".", "local", "etc", "foo"]와 같으면 출력은 ['usr', 'local', 'etc', 'foo'], "/usr/../usr/./local/etc"를 나타내는 부분이 "/usr/local/etc/foo"로 해석됨
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s :=새 목록
- 경로의 각 요소 i에 대해 다음을 수행합니다.
- 내가 '..'와 같으면
- s가 비어 있지 않으면
- s에서 마지막 요소 삭제
- s가 비어 있지 않으면
- 그렇지 않으면 i가 '.'와 같지 않으면
- s 끝에 i 삽입
- 내가 '..'와 같으면
- 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
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"]))
입력
["usr", "..", "usr", ".", "local", "etc", "foo"]
출력
['usr', 'local', 'etc', 'foo']