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 }
  • 相关阅读:
    ibatis 循环迭代
    javascript 中Table、TableCell 、TableRow对象
    Java重载Java构造器
    java垃圾回收机制
    Java在J2EE工程中路径寻址问题终极解决方案
    JAVASCRIPT 验证计算中英文混合字符串长度的解决
    java基础学习及总结
    ORACLE nvarchar2和varchar2的区别
    StringBuffer的用法
    关于Ant下的路径查找
  • 原文地址:https://www.cnblogs.com/renzongxian/p/7824838.html
Copyright © 2011-2022 走看看