Hello everyone , I'm Qi Guanjie (qí guān jié ), stay 【 Qi Guanjie 】 official account 、CSDN、GitHub、B Share some technical blog posts on the website and other platforms , It mainly includes front-end development 、python The backend development 、 Applet development 、 Data structure and algorithm 、docker、Linux Common operation and maintenance 、NLP And other related technical blog , Time flies , Future period , come on. ~
If you love bloggers, you can focus on the bloggers' official account. 【 Qi Guanjie 】(qí guān jié), The articles inside are more complete and updated faster . If you need to find a blogger, you can leave a message at the official account. , I will reply to the message as soon as possible .
This article was originally written as 【 Qi Guanjie 】(qí guān jié ), Please support the original , Some platforms have been stealing blog articles maliciously !!! All articles please pay attention to WeChat official account 【 Qi Guanjie 】.
Give you a string path
, Indicates a point to a file or directory Unix style Absolute path ( With '/'
start ), Please translate it into a more concise specification path .
stay Unix Style file system , One point (.
) Represents the current directory itself ; Besides , Two points (..
) Means to switch the directory to the next level ( Point to the parent directory ); Both can be part of a complex relative path . Any number of consecutive slashes ( namely ,'//'
) Are treated as a single slash '/'
. For this problem , Points in any other format ( for example ,'...'
) Are considered documents / Directory name .
Please note that , Back to Canonical path The following format must be followed :
'/'
start .'/'
.'/'
ending .'.'
or '..'
).Return the simplified Canonical path .
Example 1:
Input :path = "/home/"
Output :"/home"
explain : Be careful , There is no slash after the last directory name .
Example 2:
Input :path = "/../"
Output :"/"
explain : It's not feasible to go up from the root , Because the root directory is the highest level you can reach .
Example 3:
Input :path = "/home//foo/"
Output :"/home/foo"
explain : In the canonical path , Multiple consecutive slashes need to be replaced with one slash .
Example 4:
Input :path = "/a/./b/../../c/"
Output :"/c"
Tips :
1 <= path.length <= 3000
path
By the English letters , Numbers ,'.'
,'/'
or '_'
form .path
Is an effective Unix Style absolute path . Utilization stack . If it is ..
And there are elements in the stack , The top of the stack will pop up . If it is others, press the stack ,Python Can be used directly split Remove excess /
, So don't worry
class Solution:
def simplifyPath(self, path: str) -> str:
path = path.split('/')
stack = []
for item in path:
if item == '':
continue
if item == '..':
if len(stack) > 0:
stack.pop()
elif item != '.':
stack.append(item)
return "/"+'/'.join(stack)