zoukankan      html  css  js  c++  java
  • 71. Simplify Path

    Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the canonical path.

    In a UNIX-style file system, a period . refers to the current directory. Furthermore, a double period .. moves the directory up a level. For more information, see: Absolute path vs relative path in Linux/Unix

    Note that the returned canonical path must always begin with a slash /, and there must be only a single slash / between two directory names. The last directory name (if it exists) must not end with a trailing /. Also, the canonical path must be the shortest string representing the absolute path.

    Example 1:

    Input: "/home/"
    Output: "/home"
    Explanation: Note that there is no trailing slash after the last directory name.
    

    Example 2:

    Input: "/../"
    Output: "/"
    Explanation: Going one level up from the root directory is a no-op, as the root level is the highest level you can go.
    

    Example 3:

    Input: "/home//foo/"
    Output: "/home/foo"
    Explanation: In the canonical path, multiple consecutive slashes are replaced by a single one.
    

    Example 4:

    Input: "/a/./b/../../c/"
    Output: "/c"
    

    Example 5:

    Input: "/a/../../b/../c//.//"
    Output: "/c"
    

    Example 6:

    Input: "/a//b////c/d//././/.."
    Output: "/a/b/c"
    class Solution {
        public String simplifyPath(String path) {
            String[] strs = path.split("/");
            ArrayList<String> list1 = new ArrayList<String>();
            for(int i = 0; i < strs.length; i++){
            //将空字符串(由类似这种"/a//c"的字符串产生)和 "." ("."代表当前目录不影响路径)去掉,保存到 list1
            if (strs[i].isEmpty() || strs[i].equals(".")) {
                continue;
            }
            list1.add(strs[i]);
            }
            ArrayList<String> list2 = new ArrayList<String>();
            for(int i = 0; i < list1.size(); i++){
                if(list1.get(i).equals("..")){
                    if(!list2.isEmpty()){
                        list2.remove(list2.size() - 1);
                    }
                } else list2.add(list1.get(i));
            }
            String res = String.join("/",list2);
            res = "/" + res;
            return res;
        }
    }

    这种题真是索然无味

    https://leetcode.wang/leetCode-71-Simplify-Path.html

  • 相关阅读:
    浅谈最长上升子序列(LIS)
    浅谈树链剖分
    数字计数
    windy数
    骑士(树形dp)
    旅游规划
    皇宫看守
    k8s安装报错
    linux文件夹存储潜规则
    搭建覆盖率测试环境
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11406483.html
Copyright © 2011-2022 走看看