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 }

浙公网安备 33010602011771号