Question

Given an absolute path for a file (Unix-style), simplify it.

For example, path = "/home/", => “/home" path = "/a/./b/../../c/", => “/c”`

Corner Cases:

  • Did you consider the case where path = "/../"? In this case, you should return "/".
  • Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/". In this case, you should ignore redundant slashes and return "/home/foo".

Solution

class Solution:
    def simplifyPath(self, path):
        """
        :type path: str
        :rtype: str
        """
        if len(path) == 0:
            return "/"

        nodes = path.split('/')
        res = list()
        prefix = ''
        if nodes[0] == '':
            prefix = '/'
            nodes[1:]

        for node in nodes:
            if node == '..':
                if len(res) > 0:
                    res.pop()
            elif node != '.' and node != '':
                res.append(node)

        return prefix + '/'.join(res)