leetcode - 71 簡化路徑
阿新 • • 發佈:2018-11-30
給定一個文件 (Unix-style) 的完全路徑,請進行路徑簡化。
例如,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
邊界情況:
- 你是否考慮了 路徑 =
"/../"
的情況?
在這種情況下,你需返回"/"
。 - 此外,路徑中也可能包含多個斜槓
'/'
,如"/home//foo/"
。
在這種情況下,你可忽略多餘的斜槓,返回"/home/foo"
。
再加上兩個例子 path = "/a/./b/../c/"
"/a/c"和path = "/a/./b/c/"
, => "/a/b/c",
這樣我們就可以知道中間是"."的情況直接去掉,是".."時刪掉它上面挨著的一個路徑,而下面的邊界條件給的一些情況中可以得知,如果是空的話返回"/",如果有多個"/"只保留一個。那麼我們可以把路徑看做是由一個或多個"/"分割開的眾多子字串,把它們分別提取出來一一處理即可。
參考:
http://www.cnblogs.com/grandyang/p/4347125.html
public String simplifyPath(String path) { Stack<String> s = new Stack<>(); String[] p = path.split("/"); for(String t : p){ if(!s.isEmpty() && t.equals("..")){ s.pop(); }else if(!t.equals(".") && !t.equals("") && !t.equals("..")){ s.push(t); } } List<String> list = new ArrayList(s); return "/" + String.join("/", list); }