zoukankan      html  css  js  c++  java
  • simplify Path

    package cn.edu.xidian.sselab.string;

    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
    import java.util.Stack;

    /**
     *
     * @author zhiyong wang
     * title: simplify Path
     * content:
     * Given an absolute path for a file (Unix-style), simplify it.
     *
     * For example,
     * path = "/home/", => "/home"
     * path = "/a/./b/../../c/", => "/c"
     *
     */
    public class SimplifyPath {

        //弹出,匹配问题,想到用栈来实现,同时遇到分割问题想到split函数
        //看了Deque源码才发现,只有push() 与pop()方法是stack方法。所以这里可以用做栈
        public String simplifyPath(String path){    
                //下面这两行是等价的
    //            Deque<String> stack = new LinkedList<String>();
                Stack<String> stack = new Stack();
                Set set = new HashSet<>(Arrays.asList("..",".",""));//这行代码学习一下
                for(String str : path.split("/")){
                    if(str.equals("..") && !stack.isEmpty()) stack.pop();
                    else if(!set.contains(str)) stack.push(str);
                }
                String res = "";
                
                while(!stack.isEmpty()){
                    res = "/" + stack.pop() + res;
                }
                return res.isEmpty() ? "/" : res;
        }
    }

  • 相关阅读:
    myeclipse启动后,卡在loading workbench界面
    oracle数据库导入dmp文件
    ORA-28009: 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接
    debug启动项目很慢
    CSS利用border绘制图形
    HTML创建链接框
    CSS实现单行文本溢出显示省略号
    HTML5中的Web Worker
    HTML拖放元素
    Canvas和SVG的比较
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5229322.html
Copyright © 2011-2022 走看看