zoukankan      html  css  js  c++  java
  • Simplify Path(路径简化)

    问题:

    来源:https://leetcode.com/problems/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".

    思路:

    先将路径按照“/”切分,然后遍历切分后的路径,利用栈的思想,遇到“”或者“.”就忽略,遇到“..”就出栈(除非栈中没有元素),遇到其他字符串就入栈,最后将栈中的字符串用“/”拼接起来

     1 import java.util.Stack;
     2 class Solution {
     3     public String simplifyPath(String path) {
     4         String[] subpaths = path.split("/");
     5         Stack<String> stack = new Stack<String>();
     6         for(String subpath: subpaths) {
     7             if(subpath.equals(".") || subpath.equals("")) {
     8                 continue;
     9             } else if(subpath.equals("..")) {
    10                 if(!stack.isEmpty()) {
    11                     stack.pop();
    12                 }
    13             } else {
    14                 stack.push(subpath);
    15             }
    16         }
    17         StringBuilder stringBuilder = new StringBuilder();
    18         for(String subpath: stack) {
    19             stringBuilder.append("/" + subpath);
    20         }
    21         if(stringBuilder.length() == 0) {
    22             stringBuilder.append("/");
    23         }
    24         return stringBuilder.toString();
    25     }
    26 }
  • 相关阅读:
    构建之法 读书笔记01
    团队合作第一次会议有感
    浪潮之巅 读书笔记 03
    浪潮之巅 读书笔记 02
    团队介绍
    疫情查询app 开发
    世界疫情信息爬取 及开发查询爬取数据的app
    浪潮之巅 读书笔记 01
    支付宝沙箱配置
    定时器定时执行redis操作定时器执行几次自动停止的问题
  • 原文地址:https://www.cnblogs.com/renzongxian/p/7824838.html
Copyright © 2011-2022 走看看