标签:文件夹 算法 equals 出现 字符串 color 无法 equal col
题解参考天码营:https://www.tianmaying.com/tutorial/LC71
给定一个文档 (Unix-style) 的完全路径,请进行路径简化。
例如,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
边界情况:
"/../"
的情况?"/"
。‘/‘
,如 "/home//foo/"
。"/home/foo"
。对于这道题目来说,最为关键的算法就是如何处理".."对于之前路径的“退回”操作。不难发现,每次“退回”的都是当前路径中的最后一个“文件夹”,每次进入的文件夹也都会出现在路径的最后。这样的一个“从一段添加或者删除”的模式恰恰就是栈的定义。
当我们知道要使用栈结构以后,还有几个坑需要注意:
我们处理的步骤是如下:
..
,则看stack中是否有元素,如果有,删除最后一个.
或者
,则不做任何处理 这样,在处理完所有段之后,我们就可以确保仍然在stack中的就是最简单的路径字符串了,这个时候,我们只需要使用/
将他们拼接成答案即可。
class Solution { public String simplifyPath(String path) { Stack<String> stringStack = new Stack<>(); String[] arr = path.split("/"); for(String str:arr) { if(str.equals("")||str.equals(".")) continue; if(str.equals("..")) { if(!stringStack.empty()) stringStack.pop(); } else stringStack.push(str); } String ans = ""; while (!stringStack.empty()) { ans="/"+stringStack.pop()+ans; } if(ans.equals("")) return "/"; return ans; } }
标签:文件夹 算法 equals 出现 字符串 color 无法 equal col
原文地址:https://www.cnblogs.com/MrSaver/p/9940317.html