首页 > 代码库 > Simplify Path
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"
.
方法
题目的要求是输出Unix下的最简路径,Unix文件的根目录为"/","."表示当前目录,".."表示上级目录。
使用Stack来进行处理。
public String simplifyPath(String path) { Stack<String> stack = new Stack<String>(); String str = ""; for (int i = 0; i < path.length(); i++) { if (path.charAt(i) == '/') { if (str.equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } else if (!str.equals(".") && !str.equals("")) { stack.push(str); } str = ""; } else { str += path.charAt(i); } } if (str.equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } else if (!str.equals(".") && !str.equals("")) { stack.push(str); } if (stack.isEmpty()) { return "/"; } String re = ""; while (!stack.isEmpty()) { re = "/" + stack.pop() + re; } return re; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。