Given an absolute path for a file (Unix-style), simplify it.
For example,
path =
path =
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"
.
Solution:
public class Solution { public String simplifyPath(String path) { String[] folders = path.split("/",-1); boolean[] used = new boolean[folders.length]; for(int i=0; i<folders.length; i++) { if(folders[i].equals(".")) used[i]=false; else if(folders[i].equals("..")) { used[i]=false; for(int j=i-1; j>=0; j--) if(used[j]) { used[j]=false; break; } } else if (folders[i].length()==0) used[i]=false; else used[i]=true; } StringBuilder sb = new StringBuilder(); for(int i=0; i<folders.length; i++) { if(used[i]) { sb.append('/'); sb.append(folders[i]); } } if(sb.length()==0) sb.append('/'); return sb.toString(); } }
No comments :
Post a Comment