Monday, June 9, 2014

LeetCode (Python): Simplify Path

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".

Soultion:

class Solution:
    # @param path, a string
    # @return a string
    def simplifyPath(self, path):
        folders = path.split('/')
        used = []
        for i in range(0, len(folders)):
            if folders[i]=='.':
                used.append(False)
            elif folders[i]=='..':
                used.append(False)
                for j in range(i-1,-1,-1):
                    if used[j]:
                        used[j] = False
                        break
            elif len(folders[i])==0:
                used.append(False)
            else:
                used.append(True)
        solution = []
        
        for i in range(0, len(folders)):
            if used[i]:
                solution.append('/')
                solution.append(folders[i])
        
        if len(solution) == 0:
            solution.append('/')
            
        return ''.join(solution)

No comments :

Post a Comment