LeetCode 71 - Simplify Path

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

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

 

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".
public String simplifyPath(String path) {
    String[] paths = path.split("\\/+");
    Stack<String> stack = new Stack<>();
    for(String p:paths) {
        if(p.isEmpty() || p.equals(".")) continue;
        if(p.equals("..")) {
            if(!stack.isEmpty()) stack.pop();
        } else {
            stack.push(p);
        }
    }
    if(stack.isEmpty()) return "/";
    String s = "";
    while(!stack.isEmpty()) {
        s = "/"+stack.pop()+s;
    }
    return s;
}

  

你可能感兴趣的:(LeetCode)