Leetcode 71. Simplify Path

来源:互联网 发布:js获取页面停留时间 编辑:程序博客网 时间:2024/06/05 17:56

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

网址是被"/"隔开,对于网址的分析可以见这篇博客

http://www.cnblogs.com/springfor/p/3869666.html

如果遇见了"."或者分割的字符串为空,则跳过这个字符串,如果遇到“..”,然后就进行弹出堆栈的操作

code

public class Solution {    public String simplifyPath(String path) {        if(path == null || path.length() == 0)            return path;        Stack<String>stack = new Stack<String>();        String[] temRes = path.split("/");        for(int i = 0; i < temRes.length; i++){            if(temRes[i].equals(".") || temRes[i].length() == 0)                 continue;            else if(temRes[i].equals("..")){                if(!stack.isEmpty()){                    stack.pop();                }            }            else{                stack.push(temRes[i]);            }        }        //I use two stack to reverse the make the order of the string the same with the original string        Stack<String> reverse = new Stack<String>();        StringBuffer result = new StringBuffer();        while(!stack.isEmpty()){            reverse.push(stack.pop());        }        while(!reverse.isEmpty()){            result.append("/" + reverse.pop());        }        if(result.length() == 0)            result.append("/");        return result.toString();    }}


0 0
原创粉丝点击