摘要:,可以用函數去掉所有,然后多考慮一個中間為空的。關于語句的一個特點我們對和其實都是不做操作,然而,兩個可以都,但是不能都不做操作。像這樣這樣這兩個就都會等價于下一個就會出錯。
Problem
Given an absolute path for a file (Unix-style), simplify it.
Example"/home/", => "/home" //去掉末尾的slash "/a/./b/../../c/", => "/c" //每個"/../"對應:刪除一個上層的segmentChallenge
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".
Note關于challenge的兩點:
"/../",這里討論的有兩種情況,空集和"/../"本身??占右粋€if語句返回slash就可以了,"/../"本身要綜合Example的例子,pop出上一層元素。
Multiple slashes,可以用split()函數去掉所有slash,然后多考慮一個slash中間為空的case。
關于switch語句的一個特點:
我們對case ""和case "."其實都是不做操作,然而,兩個case可以都break,但是不能都不做操作。像這樣:
case "": case ".":
這樣這兩個case就都會等價于下一個case:case "..". 就會出錯。
Solutionpublic class Solution { public String simplifyPath(String path) { Stackstack = new Stack (); String[] segments = path.split("/"); for (String segment: segments) { switch(segment) { case "": break; case ".": case "..": if (!stack.isEmpty()) { stack.pop(); } break; default: stack.push(segment); } } StringBuilder sb = new StringBuilder(); if (stack.isEmpty()) {//空集的情況 return "/"; } while (!stack.isEmpty()) { sb.insert(0, "/"+stack.pop());//Don"t miss the slash! } return sb.toString(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65495.html
摘要:標題文字簡化風格的絕對路徑。我們可以首先將所有的內容從中分離出來,然后分別處理。這里我們需要用到堆棧的數據結構。堆棧有很多種實現方式,中的類類都可以實現其功能。我們將讀到的路徑入棧,根據操作符出棧,最后將棧中剩余的元素組織成路徑返回即可。 標題文字 Given an absolute path for a file (Unix-style), simplify it. For exa...
摘要:棧法復雜度時間空間思路思路很簡單,先將整個路徑按照分開來,然后用一個棧,遇到時彈出一個,遇到和空字符串則不變,遇到正常路徑則壓入棧中。注意如果結果為空,要返回一個彈出棧時要先檢查棧是否為空代碼 Simplify Path Given an absolute path for a file (Unix-style), simplify it. For example, path = /...
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...
摘要:題目解答的規則如下三種需要跳過的情況當遇到時,需要向前進出來的順序是反的,所以加的時候,把最新出來的路徑加在前面 題目:Given an absolute path for a file (Unix-style), simplify it. For example,path = /home/, => /homepath = /a/./b/../../c/, => /cclick to ...
摘要:調用函數更新路徑和的最大值,而函數本身需要遞歸,返回的是單邊路徑和。所以函數要返回的是,主函數中返回的卻是最上一層根節點處和的較大值,與之前遍歷過所有路徑的最大值之間的最大值。 Problem Given a binary tree, find the maximum path sum. The path may start and end at any node in the tre...
閱讀 3968·2021-11-16 11:44
閱讀 5189·2021-10-09 09:54
閱讀 2031·2019-08-30 15:44
閱讀 1678·2019-08-29 17:22
閱讀 2753·2019-08-29 14:11
閱讀 3389·2019-08-26 13:25
閱讀 2324·2019-08-26 11:55
閱讀 1595·2019-08-26 10:37