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

Solution:
1. public class Solution {
2. public String simplifyPath(String path) {
3. Set set = new HashSet<>(Arrays.asList("", ".", ".."));
4. Deque deque = new ArrayDeque<>();
5. 6. for (String token : path.split("/")) {
7. if (token.equals("..") && !deque.isEmpty())
8. deque.pollLast();
9. 10. if (set.contains(token))
11. continue;
12. 13. deque.addLast(token);
14. }
15. 16. StringBuilder sb = new StringBuilder();
17. 18. while (!deque.isEmpty()) {
19. sb.append("/" + deque.pollFirst());
20. }
21. 22. return sb.length() == 0 ? "/" : sb.toString();
23. }
24. }