题意:
//以 '/' 开头
//一个点(.)表示当前目录本身
//两个点 (..) 表示将目录切换到上一级(指向父目录)
// 双斜杠// 表示单斜杠/
//三点及以上表示文件/目录名称
//不能以/结尾
//第一个必须为/
思路:
利用栈
利用字符串分割 用/把字符串分割出来
依次对.. . 进行判断
然后再依次存储
代码:
class Solution {
public String simplifyPath(String path) {
//以 '/' 开头
//一个点(.)表示当前目录本身
//两个点 (..) 表示将目录切换到上一级(指向父目录)
// 双斜杠// 表示单斜杠/
//三点及以上表示文件/目录名称
//不能以/结尾
//利用栈 第一个必须为/
String[] str=path.split("/");// ..
Stack<String> res=new Stack<>();
for(String s:str){
if(s.equals("..") && !res.empty() ) res.pop();//..返回上一级
if(!s.equals(".") && !s.equals("..") && !s.equals("") ) res.push(s);
}
//将栈里的路径 依次弹出 并且加上/
StringBuffer out=new StringBuffer();
while(!res.empty()){
out.insert(0,res.pop());
out.insert(0,"/");
}
//if(str.length==2 && str[1].equals("..")) return "/";
if(out.length()==0) return "/";//如果分割符在首位的话 字符数组中将会在对应位置 加一个"" 表示为null
return out.toString();
}
}