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"
.
class Solution {
public String simplifyPath(String path) {
String[] sArray = path.split("/");
List<String> lst = new LinkedList<>();
for (int i = 0; i < sArray.length; ++ i){
if (sArray[i].length() == 0||sArray[i].equals(".")){
continue;
}
if (sArray[i].equals("..")){
if (lst.size() > 0){
lst.remove(lst.size() - 1);
}
}
else {
lst.add("/" + sArray[i]);
}
}
if (lst.size() == 0){
return "/";
}
StringBuilder sb = new StringBuilder();
for (String s : lst){
sb.append(s);
}
return new String(sb);
}
}