Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
遇到..需要返回上一级目录,遇到.和/直接忽略,用堆栈保存路径,代码:
public String simplifyPath(String path) { Stack<String> stack=new Stack<>(); int i=0; while(i<path.length()){ if(path.charAt(i)=='/') { i++; continue; } String str=""; while(i<path.length()&&path.charAt(i)!='/') str+=path.charAt(i++); if(str.equals(".")) continue; if(str.equals("..")){ if(!stack.isEmpty()) stack.pop(); else continue; } else stack.push(str); } String res=""; while(!stack.isEmpty()){ res+="/"+stack.pop(); } return res.length()==0?"/":res; }