摘要:棧法復(fù)雜度時間空間思路思路很簡單,先將整個路徑按照分開來,然后用一個棧,遇到時彈出一個,遇到和空字符串則不變,遇到正常路徑則壓入棧中。注意如果結(jié)果為空,要返回一個彈出棧時要先檢查棧是否為空代碼
Simplify Path
棧法 復(fù)雜度Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c"
時間 O(N) 空間 O(N)
思路思路很簡單,先將整個路徑按照/分開來,然后用一個棧,遇到..時彈出一個,遇到.和空字符串則不變,遇到正常路徑則壓入棧中。
注意如果結(jié)果為空,要返回一個/
彈出棧時要先檢查棧是否為空
代碼public class Solution { public String simplifyPath(String path) { Stackstk = new Stack (); String[] parts = path.split("/"); for(String part : parts){ switch(part){ case ".": case "" : break; case "..": if(!stk.isEmpty()){ stk.pop(); } break; default: stk.push(part); } } StringBuilder sb = new StringBuilder(); if(stk.isEmpty()){ return "/"; } while(!stk.isEmpty()){ sb.insert(0, "/"+stk.pop()); } return sb.toString(); } }
2018/2
class Solution: def simplifyPath(self, path): """ :type path: str :rtype: str """ parts = path.split("/") simplified = [] for part in parts: if part == "." or part == "": continue elif part == "..": simplified and simplified.pop() else: simplified.append(part) return "/" + "/".join(simplified)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64631.html
摘要:標題文字簡化風格的絕對路徑。我們可以首先將所有的內(nèi)容從中分離出來,然后分別處理。這里我們需要用到堆棧的數(shù)據(jù)結(jié)構(gòu)。堆棧有很多種實現(xiàn)方式,中的類類都可以實現(xiàn)其功能。我們將讀到的路徑入棧,根據(jù)操作符出棧,最后將棧中剩余的元素組織成路徑返回即可。 標題文字 Given an absolute path for a file (Unix-style), simplify it. For exa...
Problem Given an absolute path for a file (Unix-style), simplify it. For example, path = /home/, => /home path = /a/./b/../../c/, => /c path = /a/../../b/../c//.//, => /c //here: b is cancelle...
摘要:題目解答的規(guī)則如下三種需要跳過的情況當遇到時,需要向前進出來的順序是反的,所以加的時候,把最新出來的路徑加在前面 題目:Given an absolute path for a file (Unix-style), simplify it. For example,path = /home/, => /homepath = /a/./b/../../c/, => /cclick to ...
摘要:,可以用函數(shù)去掉所有,然后多考慮一個中間為空的。關(guān)于語句的一個特點我們對和其實都是不做操作,然而,兩個可以都,但是不能都不做操作。像這樣這樣這兩個就都會等價于下一個就會出錯。 Problem Given an absolute path for a file (Unix-style), simplify it. Example /home/, => /home //去掉末尾的slash...
摘要:的符號運算如果之前是學(xué)數(shù)學(xué)相關(guān)專業(yè)了解計算機代數(shù)系統(tǒng),就會對數(shù)學(xué)符號的運算比較熟悉,而如果之前是程序員,可能會有點不太明白,下面我們就來了解一下。 在我們初、高中和大學(xué)近10年的學(xué)習時間里,數(shù)學(xué)一直占據(jù)著非常大的分量,但是回憶過去可以發(fā)現(xiàn),我們把大量的時間都花在反復(fù)解題、不斷運算上,計算方法、運算技巧、筆算能力以及數(shù)學(xué)公式的記憶仿佛成了我們學(xué)習數(shù)學(xué)的全部。這些記憶和技巧沒幾年就忘掉了,...
閱讀 1961·2021-09-09 09:33
閱讀 1107·2019-08-30 15:43
閱讀 2646·2019-08-30 13:45
閱讀 3297·2019-08-29 11:00
閱讀 845·2019-08-26 14:01
閱讀 3559·2019-08-26 13:24
閱讀 471·2019-08-26 11:56
閱讀 2683·2019-08-26 10:27