題目
給定一個文檔(Unix-style)的完全路徑家淤,請進(jìn)行路徑簡化改抡。
樣例
"/home/", => "/home"
"/a/./b/../../c/", => "/c"
分析
思路比較簡單吨铸,遇到..就回到上一級,遇到.或者空就不處理渣慕。
我們使用一個隊(duì)列來處理语卤,同時(shí)將三個需要特殊處理的字符存到一個set里面
代碼
public class Solution {
/**
* @param path the original path
* @return the simplified path
*/
public String simplifyPath(String path) {
Deque<String> queue = new LinkedList<String>();
Set<String> skip = new HashSet<String>(Arrays.asList("..",".",""));
for(String dir : path.split("/")) {
if(dir.equals("..") && !queue.isEmpty())
queue.pop();
else if(!skip.contains(dir))
queue.push(dir);
}
String res = "";
for(String dir : queue)
res = "/" + dir + res;
return res.isEmpty() ? "/" : res;
}
}