化簡Unix系統下一個文件的絕對路徑。
注意點:
根目錄的上層目錄還是根目錄 可能有多個分隔符同時使用例子:
輸入: path = “/a/./b/../../c/”
輸出: “/c”
用棧來處理,碰到有效字符就壓棧,遇到上層目錄字符”..”且棧不空時就彈出。為了最後連接字符串時頭上有根目錄,在棧底加一個空字符。
class Solution(object):
def simplifyPath(self, path):
"""
:type path: str
:rtype: str
"""
parts = path.split("/")
result = ['']
for part in parts:
if part:
if part not in ('.', '..'):
if len(result) == 0:
result.append('')
result.append(part)
elif part == '..' and len(result) > 0:
result.pop()
if len(result) < 2:
return "/"
else:
return "/".join(result)
if __name__ == "__main__":
assert Solution().simplifyPath("/a/./b/../../c/") == '/c'
assert Solution().simplifyPath("/home/") == "/home"
assert Solution().simplifyPath("/../../") == "/"