您的位置:首页 > 其它

LeetCode 71 - Simplify Path

2015-06-22 16:20 155 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/yuanhisn/article/details/84725436

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;
}

  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: