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".

Solution:

public class Solution {
    public String simplifyPath(String path) {
        Stack<String> stack = new Stack<>();
        for(String s : path.split("/")){
            if(s.equals("..")){
                if(stack.size()>0) stack.pop();
            } else if(s.equals(".")){
                continue;
            } else{
                if(s.length()!=0) stack.push(s);
            }
        }
        System.out.println(stack.toString());
        String ans = "";
        while(stack.size()>0){
            ans = "/" + stack.pop() + ans;
        }
        return ans.length()==0 ? "/" : ans;
    }
}
comments powered by Disqus