[LeetCode] 71. Simplify Path java

来源:互联网 发布:创维网络电视价格 编辑:程序博客网 时间:2024/05/29 07:38
    /**71. Simplify Path      * @param path     * @returnString     */    public String simplifyPath(String path) {        Stack<String> s = new Stack<String>();        String[] strs = splitString (path);        for (int i = 0; i < strs.length; i++) {            if (strs[i].equals(".")) {                continue;            } else if (strs[i].equals("..")) {                if (!s.empty()) {                    s.pop();                }            } else {                s.push(strs[i]);            }        }        String ret = "";        while (!s.empty()) {            ret = "/" + s.pop() + ret;        }        if (ret.isEmpty()) {            ret = "/";        }        return ret;    }    public String[] splitString(String s) {        String temp = "";        Queue<String> arr = new LinkedList<String>();        int count = 0;        for (int i = 0; i < s.length(); i++) {            if (s.charAt(i) == '/') {                if (temp != "") {                    arr.offer(temp);                    count++;                }                temp = "";            } else {                temp += s.charAt(i);            }        }        if (temp != "") {            arr.offer(temp);            count++;        }        String[] ret = new String[count];         int i = 0;        while (!arr.isEmpty()) {            ret[i++] = arr.poll();        }        return ret;    }

//Unix-style的path中: “.”表示当前目录下的子目录,”..”表示返回上一级目录,”…”保留
//首先以’/’拆分字符串,之后用栈来操作,如果..则出栈,最后拼接的时候加上’/’
//Queue: offer(), pop(), isEmpty()
//String比较相等: equals()

0 0
原创粉丝点击