1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
public class SimplifyPath { public String simplifyPath(String path) { if (path == null || path.isEmpty()) { return ""; } if (!path.startsWith("/")) { return null; } path = path.trim(); Stack<String> stack = new Stack<String>(); StringBuilder sb = new StringBuilder(); String[] splits = path.split("/"); for (String s : splits) { s = s.trim(); if (isValid(s)) { stack.push(s); } else if (s.equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } } for (String s : stack) { sb.append("/").append(s); } return sb.toString().isEmpty() ? "/" : sb.toString(); } private boolean isValid(String s) { return !(s.isEmpty() || s.equals(".") || s.equals("..")); } }
|