给定一个文档(Unix-style)的完全路径,请进行路径简化。
样例
"/home/"
, => "/home"
"/a/./b/../../c/"
, => "/c"
解题思路:可以把目录看成一棵树,则一条路径即为从树根到每个子节点的路径,一层层的走下去。
如果当前层为 . 或者 空,则可以忽略
如果当前层为 ..,则要回退到上一层目录
代码:
public class Solution {
/**
* @param path the original path
* @return the simplified path
*/
public String simplifyPath(String path) {
// Write your code here
String[] Names = path.split("/");
Stack<String> S = new Stack<String>();
for(int i=0;i<Names.length;++i){
if(".".equals(Names[i])||"".equals(Names[i]))
continue;
if("..".equals(Names[i])){
if(!S.empty())
S.pop();
}else
S.push(Names[i]);
}
StringBuilder R = new StringBuilder();
while(!S.empty()){
R.insert(0,S.pop());
R.insert(0,"/");
}
if(R.length()==0)
R.append("/");
return R.toString();
}
}