原题连接


思路如下:
"/" 去拆分字符串,得到每个子目录。这里拿到的子目录可能是空字符串,需要注意一下。". ." ,说明是向上层目录前进,我们从移除队尾元素。".",咱啥也不用管。public String simplifyPath(String path) {
LinkedList<String> queue = new LinkedList<>();
for (String item : path.split("/")) {
if (item.equals("..")) {
// 队列必须非空,我们才能移除
if (!queue.isEmpty()) {
queue.pollLast();
}
} else if (!".".equals(item) && !item.isEmpty()) {// 这里注意一下,空元素以及 "." 我们都不用管
queue.addLast(item);
}
}
StringBuilder res = new StringBuilder();
// 从队首元素开始取元素,拼接字符
while (!queue.isEmpty()) {
res.append("/" + queue.pollFirst());
}
String rr = res.toString();
// 最后再判空一下
return rr.isEmpty() ? "/" : rr;
}