71. Simplify Path

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

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

click to show corner cases.

 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".
Hide Tags
 Stack String
 
public class Solution {
    public String simplifyPath(String path) {
        String[] paths = path.split("/");
        ArrayDeque<String> simplified = new ArrayDeque<String>();
        
        for(String p: paths)
        {
            if(p.equals(".") || p.equals(""))
                continue;
            if(p.equals(".."))
            {
                if(!simplified.isEmpty())
                    simplified.pop();
            }
            else
                simplified.push(p);
        }
        
        StringBuilder sb = new StringBuilder();
        while(!simplified.isEmpty())
        {
            sb.append("/");
            sb.append(simplified.removeLast());
        }
        String ret = sb.toString();
        if(!ret.equals(""))
            return ret;
        return "/";
    }
}

 

posted @ 2016-07-15 12:47  新一代的天皇巨星  阅读(125)  评论(0编辑  收藏  举报