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

Python描述 LeetCode 71. 簡化路徑

編輯:Python

Python描述 LeetCode 71. 簡化路徑

大家好,我是亓官劼(qí guān jié ),在【亓官劼】公眾號、CSDN、GitHub、B站等平台分享一些技術博文,主要包括前端開發、python後端開發、小程序開發、數據結構與算法、docker、Linux常用運維、NLP等相關技術博文,時光荏苒,未來可期,加油~

如果喜歡博主的文章可以關注博主的個人公眾號【亓官劼】(qí guān jié),裡面的文章更全更新更快。如果有需要找博主的話可以在公眾號後台留言,我會盡快回復消息.


本文原創為【亓官劼】(qí guān jié ),請大家支持原創,部分平台一直在惡意盜取博主的文章!!! 全部文章請關注微信公眾號【亓官劼】。

題目

給你一個字符串 path ,表示指向某一文件或目錄的 Unix 風格 絕對路徑 (以 '/' 開頭),請你將其轉化為更加簡潔的規范路徑。

在 Unix 風格的文件系統中,一個點(.)表示當前目錄本身;此外,兩個點 (..) 表示將目錄切換到上一級(指向父目錄);兩者都可以是復雜相對路徑的組成部分。任意多個連續的斜槓(即,'//')都被視為單個斜槓 '/' 。 對於此問題,任何其他格式的點(例如,'...')均被視為文件/目錄名稱。

請注意,返回的 規范路徑 必須遵循下述格式:

  • 始終以斜槓 '/' 開頭。
  • 兩個目錄名之間必須只有一個斜槓 '/'
  • 最後一個目錄名(如果存在)不能'/' 結尾。
  • 此外,路徑僅包含從根目錄到目標文件或目錄的路徑上的目錄(即,不含 '.''..')。

返回簡化後得到的 規范路徑

示例 1:

輸入:path = "/home/"
輸出:"/home"
解釋:注意,最後一個目錄名後面沒有斜槓。

示例 2:

輸入:path = "/../"
輸出:"/"
解釋:從根目錄向上一級是不可行的,因為根目錄是你可以到達的最高級。

示例 3:

輸入:path = "/home//foo/"
輸出:"/home/foo"
解釋:在規范路徑中,多個連續斜槓需要用一個斜槓替換。

示例 4:

輸入:path = "/a/./b/../../c/"
輸出:"/c"

提示:

  • 1 <= path.length <= 3000
  • path 由英文字母,數字,'.''/''_' 組成。
  • path 是一個有效的 Unix 風格絕對路徑。

解題思路

利用棧。如果是..且棧裡有元素,則彈出棧頂。如果是其他的則壓棧,Python可以直接利用split去除掉多余的/,所以不用考慮

Python描述

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)

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