首页 > 编程 > Java > 正文

[LeetCode] 71. Simplify Path java

2019-11-06 06:18:58
字体:
来源:转载
供稿:网友
/**71. Simplify Path * @param path * @returnString */ public String simplifyPath(String path) { Stack<String> s = new Stack<String>(); String[] strs = splitString (path); for (int i = 0; i < strs.length; i++) { if (strs[i].equals(".")) { continue; } else if (strs[i].equals("..")) { if (!s.empty()) { s.pop(); } } else { s.push(strs[i]); } } String ret = ""; while (!s.empty()) { ret = "/" + s.pop() + ret; } if (ret.isEmpty()) { ret = "/"; } return ret; } public String[] splitString(String s) { String temp = ""; Queue<String> arr = new LinkedList<String>(); int count = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == '/') { if (temp != "") { arr.offer(temp); count++; } temp = ""; } else { temp += s.charAt(i); } } if (temp != "") { arr.offer(temp); count++; } String[] ret = new String[count]; int i = 0; while (!arr.isEmpty()) { ret[i++] = arr.poll(); } return ret; }

//Unix-style的path中: “.”表示当前目录下的子目录,”..”表示返回上一级目录,”…”保留 //首先以’/’拆分字符串,之后用栈来操作,如果..则出栈,最后拼接的时候加上’/’ //Queue: offer(), pop(), isEmpty() //String比较相等: equals()


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表