leetcode71.简化路径
参考了leetcode的官方题解,用/分割字符串就能解决多个/的问题,利用栈后进先出,碰到..就回退出栈,空字符串和.不用处理,其余正常的目录就入栈,最后双端链表从头拼接就是结果
class Solution {public String simplifyPath(String path) {Deque<String> deque = new LinkedList<>();String[] split = path.split("/");//1.向双端链表中放入符合要求的目录for (String s : split) {//1.1如果目录是..那么就要回到上级目录也就是出栈if (s.equals("..")) {if (!deque.isEmpty()) {deque.pollLast();}} else if (s.length() > 0 && !s.equals(".")) {//1.2如果是正常的目录就放入栈deque.addLast(s);}}//2.将双端链表从后向前拼接就是结果//2.1双端链表为空那么就是根目录if (deque.isEmpty()) {return "/";}//2.2双端链表不为空则拼接成完整路径StringBuilder stringBuilder = new StringBuilder();for (String s : deque) {stringBuilder.append("/").append(s);}return stringBuilder.toString();}
}