程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

(practice Python every day) simplify the path

編輯:Python

Simplified path

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 :

  • Always with slash  '/'  start .
  • There must be only one slash between two directory names  '/' .
  • Last directory name ( If there is ) You can't   With  '/'  ending .
  • Besides , The path contains only directories on the path from the root directory to the target file or directory ( namely , Not included  '.'  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 .
class Solution(object):
def simplifyPath(self, path):
"""
:type path: str
:rtype: str
"""
result = []
plist = path.split('/')
for pos in plist:
if pos:
if pos == '..':
try:
result.pop()
except:
result = []
elif pos != '.':
result.append(pos)
return '/'+'/'.join(result)
# %%
s = Solution()
print(s.simplifyPath(path = "/home/"))

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved