[LeetCode] Simplify Path solution report, leetcodesimplify
[Question]
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 shoshould return"/"
.
- Another corner case is the path might contain multiple slashes
'/'
Together, such"/home//foo/"
.
In this case, you shoshould ignore redundant slashes and return"/home/foo"
.
Hide Tags Stack String
[Resolution]
Anyone who has used Linux should be familiar with this, but note that the result of/../is/, that is, the upper-level directory of the root directory or the root directory.
[Java code]
public class Solution { public String simplifyPath(String path) { Stack<String> stack = new Stack<String>(); int len = path.length(); int start = 0; int i = 0; while (i < len) { while (i < len && path.charAt(i) == '/') { i++; } start = i; while (i < len && path.charAt(i) != '/') { i++; } if (i > start) { String part = path.substring(start, i); if (part.equals("..")) { if (!stack.isEmpty()) stack.pop(); } else if (!part.equals(".")) { stack.push(part); } } } if (stack.isEmpty()) { return "/"; } String res = ""; while (!stack.isEmpty()) { res = "/" + stack.pop() + res; } return res; }}
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.