71. Simplify Path
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
Corner Cases:
- 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"
.
public class Solution { public String simplifyPath(String path) { String[] paths = path.split("/"); ArrayDeque<String> simplified = new ArrayDeque<String>(); for(String p: paths) { if(p.equals(".") || p.equals("")) continue; if(p.equals("..")) { if(!simplified.isEmpty()) simplified.pop(); } else simplified.push(p); } StringBuilder sb = new StringBuilder(); while(!simplified.isEmpty()) { sb.append("/"); sb.append(simplified.removeLast()); } String ret = sb.toString(); if(!ret.equals("")) return ret; return "/"; } }