zoukankan      html  css  js  c++  java
  • Linux 路径精简

    给定一个 Linux 下的路径表达式,各个目录之间用 “/” 进行分割,给出精简后的路径。

    例:

    输入:$a/b/c/.././../e/f$

    输出:$a/e/f$

    思路:利用栈,遇到 “..” 出栈,除了 “.” 之外的字符入栈,然后依次出栈

     1 void pathChange(String str) {
     2     if (str == null || str.length() == 0) {
     3         return;
     4     }
     5     Stack<String> stack = new Stack<>();
     6     if (str.charAt(0) == '/') {
     7         StringBuilder s1 = new StringBuilder(str);
     8         s1.deleteCharAt(0);
     9         str = s1.toString();
    10     }
    11     String[] pathArr = str.split("/");
    12 
    13     System.out.println(str);
    14     for (String tmp : pathArr) {
    15         if (tmp.equals("..") && !stack.isEmpty()) {
    16             stack.pop();
    17         } else if (!tmp.equals(".")) {
    18             stack.push(tmp);
    19         }
    20     }
    21 
    22     StringBuilder res = new StringBuilder("");
    23     while (!stack.isEmpty()) {
    24         res.append("/");
    25         res.append(stack.pop());
    26     }
    27     System.out.println(res.reverse().toString());
    28 }
  • 相关阅读:
    SDUT3926 kmp
    SDUT 3930 线段树
    HDU 3277 最大流+二分
    HDU 3081 最大流+二分
    HDU 3605 最大流+状态压缩
    HDU 3572 最大流
    HDU 4576 DP
    POJ 2289 最大流
    POJ 1698 最大流
    poj 3498 最大流
  • 原文地址:https://www.cnblogs.com/ainsliaea/p/10723621.html
Copyright © 2011-2022 走看看