首页 > 代码库 > 71. Simplify Path

71. Simplify Path

https://leetcode.com/problems/simplify-path/#/description

 

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

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

click to show corner cases.

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

 

 

 

Sol :

 

In Unix, ‘..‘ means parent directory; ‘.‘ means current directory. 

 

Split the path using slash / and check the items. Append addresses and pop parent addresses.

 

 

class Solution(object):
    def simplifyPath(self, path):
        """
        :type path: str
        :rtype: str
        """
        stack = []
        for item in path.split("/"):
            if item not in [".", "..", ""]:
                stack.append(item)
            if item == ".." and stack:
                stack.pop()
        return "/" + "/".join(stack)

 

 

 Note:
 
1 string/list.split
 
 
 
ex. 
 
string = "www.gziscas.com.cn"

print(string.split(‘.‘))

[‘www‘, ‘gziscas‘, ‘com‘, ‘cn‘]

 

 

2 pop()

 

ex.

aList = [123, ‘xyz‘, ‘zara‘, ‘abc‘];

print "A List : ", aList.pop();
print "B List : ", aList.pop(2);

 

==>

A List :  abc
B List :  zara

71. Simplify Path