zoukankan      html  css  js  c++  java
  • [leetcode] Simplify Path

    Given an absolute path for a file (Unix-style), simplify it.

    For example,
    path = "/home/", => "/home"
    path = "/a/./b/../../c/", => "/c"

    Corner Cases:

      • Did you consider the case where path = "/../"?
        In this case, you should return "/".
      • Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
        In this case, you should ignore redundant slashes and return "/home/foo".

    https://oj.leetcode.com/problems/simplify-path/

    思路:先按'/'分割路径,存入一个stack中,注意遇到'.'和空字符要忽略,遇到'..'要pop,正常路径push,最后依次pop组合成结果。

    import java.util.Stack;
    
    public class Solution {
        public String simplifyPath(String path) {
            if (path == null || path.length() == 0)
                return path;
            Stack<String> stack = new Stack<String>();
            String[] oldPaths = path.split("/");
            for (String each : oldPaths) {
                if (each.equals(""))
                    continue;
                if (each.equals("."))
                    continue;
                if (each.equals("..")) {
                    if (!stack.isEmpty())
                        stack.pop();
                } else {
                    stack.push(each);
                }
    
            }
            if (stack.isEmpty())
                return "/";
    
            StringBuilder sb = new StringBuilder();
            while (!stack.isEmpty()) {
                sb.append(new StringBuffer(stack.pop()).reverse().toString());
                sb.append("/");
            }
    
            return sb.reverse().toString();
        }
    
        public static void main(String[] args) {
            System.out.println(new Solution().simplifyPath("/a/./b/../../c/"));
            System.out.println(new Solution().simplifyPath("//a//b//c//"));
            System.out.println(new Solution().simplifyPath("/home/.//aa/.././"));
            System.out.println(new Solution().simplifyPath("/../..//.././/."));
    
        }
    }
    View Code
  • 相关阅读:
    python-获取网页源码及保存网页图片到本地实例
    python-随机向文件中写入100个名字实例
    python-计算文件中每个字出现的次数
    python-序列类型
    python-字符串
    python示例1(基本知识巩固)
    python-示例(基本知识巩固)
    [leetcode] Binary Tree Upside Down
    Trie 树
    第K大问题
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3812626.html
Copyright © 2011-2022 走看看