Simplify Path——LeetCode

Given an absolute path for a file (Unix-style), simplify it.

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

 

题目大意:给一个String,表示一个文件的绝对路径,简化它。

解题思路:用一个栈表示即可,..向上返回一层,就是出栈一个元素,.不做操作,其他的入栈。

public class Solution {
    public String simplifyPath(String path) {
        if (path == null || path.length() == 0) {
            return null;
        }
        Deque<String> deque = new ArrayDeque<>();
        String[] dirs = path.split("/");
        for (String dir : dirs) {
            if (".".equals(dir)){
                continue;
            }
            else if ("..".equals(dir)) {
                if (!deque.isEmpty()) {
                    deque.pop();
                }
            } else {
                if(dir==null||dir.length()==0){
                    continue;
                }
                deque.push(dir);
            }
        }
        String res = "/";
        while (!deque.isEmpty()) {
            res += deque.pollLast();
            res += "/";
        }
        res = res.substring(0, res.length() > 1 ? res.length() - 1 : 1);
        return res;
    }
}

 

posted @ 2015-06-25 13:34  丶Blank  阅读(160)  评论(0编辑  收藏  举报