Leetcode探索——字节跳动·挑战字符串:简化路径

给定一个文档 (Unix-style) 的完全路径,请进行路径简化。

例如,

path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

边界情况:

你是否考虑了 路径 = "/../" 的情况?
在这种情况下,你需返回 "/" 。
此外,路径中也可能包含多个斜杠 '/' ,如 "/home//foo/" 。
在这种情况下,你可忽略多余的斜杠,返回 "/home/foo" 。

算法思路:用String.split("/")分割目录名称,用栈Stack来压入目录路径,处理../则弹出栈定目录名称。最后把栈里目录名称弹回翻转加“/”输出。

代码:

 1 import java.util.Stack;
 2 
 3 class Solution {
 4     public String simplifyPath(String path) {
 5         
 6         Stack<String> stack = new Stack<String>();
 7         String[] pathStr = path.split("/");
 8         for(int i = 0 ;i < pathStr.length; i++) {
 9             if("".equals(pathStr[i])) {
10                 continue;
11             }else if(".".equals(pathStr[i])) {
12                 continue;
13             }
14             else if("..".equals(pathStr[i])) {
15                 if(!stack.isEmpty()) {
16                     stack.pop();
17                 }
18             }
19             else {
20                 stack.push(pathStr[i]);
21             }
22         }
23         if(stack.isEmpty()) {
24             return "/";
25         }
26         StringBuilder sb = new StringBuilder();
27         while(!stack.isEmpty()) {
28             sb.insert(0, "/" + stack.pop());
29         }
30         return sb.toString();
31         
32     }
33 }

 

posted @ 2018-12-27 09:22  trashbird_fly  阅读(45)  评论(0)    收藏  举报