Simplify Path

06/28/2016 Stack String

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

Result: Accepted Time: 52 ms

Here should be some explanations.

class Solution(object):
    def simplifyPath(self, path):
        """
        :type path: str
        :rtype: str
        """
        lst =[x for x in path.split('/') if x !='.'];
        ret = []
        for x in lst:
            if x == '..':
                if len(ret) > 0:
                    ret.pop()
            elif x:
                ret.append(x)
        return '/'+'/'.join(ret)

Complexity Analytics

  • Time Complexity:
  • Space Complexity: