简单的网站建立一般多少钱,免费网页建设,百度小说风云榜2022,怎么做祝福的网站71. 简化路径
小白渣翻译
给定一个字符串 path #xff0c;它是 Unix 风格文件系统中文件或目录的绝对路径#xff08;以斜杠 ‘/’ 开头#xff09;#xff0c;将其转换为简化的规范路径。
在 Unix 风格的文件系统中#xff0c;句点 ‘.’ 指的是当前目录#xff0c;…71. 简化路径
小白渣翻译
给定一个字符串 path 它是 Unix 风格文件系统中文件或目录的绝对路径以斜杠 ‘/’ 开头将其转换为简化的规范路径。
在 Unix 风格的文件系统中句点 ‘.’ 指的是当前目录双句点 ‘…’ 指的是上一级目录任何多个连续的斜杠即 ‘//’ 被视为单斜线 ‘/’ 。对于此问题任何其他格式的句点例如 ‘…’ 都被视为文件/目录名称。
规范路径应具有以下格式 该路径以单斜杠 ‘/’ 开头。 任何两个目录都用单斜杠 ‘/’ 分隔。 该路径不以 ‘/’ 结尾。 路径仅包含从根目录到目标文件或目录的路径上的目录即没有句点 ‘.’ 或双句点 ‘…’
返回简化的规范路径。
例子 小白理解过程
这时候黑长直女神过来问小白你这题怎么思考的啊感觉这题虽然是string类型但是Unix路径格式看起来很繁琐特殊情况也都很多?
小白内心镇定小美《年会不能停》有机会一起去看看吧 哦不是的其实这样的话你理解起来就简单多了 “ .” 继续 . . 删除之前的目录 // 改为“/”
case 1: Input: “/home/user/Documents/…/图片” Output: “/home/user/图片”
case 2: Input: “/…/home/user/文件” Output: “/home/user/文件”
case 3: Input: “/home/user/./Downloads/…/图片/././” Output: “/home/user/图片”
白月光哦小白这样是清晰了不少不过我还是希望能了解更多解题思路
小白小美那我再进一步给你讲哦但是这题也有可能有“…”三个点的情况这种咱们要返回当前目录/文件名字。
举个例子吧如果给定你一个a/b/c/./…/…/d/
step1. 是 a 目录 b目录
step2. 是abc目录
step3(关键步骤)因为之后我们遇到了…那么我们需要将c目录删除这里也是我们为什么选择Stack数据结构的关键点。因为之前我们加入了c目录而现在我们需要将它给删除哦。Stack.pop()可以用来弹出。
小美小伙子可以啊这不仅对数据结构有所了解罗杰也感人啊不过电影票要你买单哦。
小白嘿嘿这是默认去看电影了啊
面试环节
面试官你可以解答这道”简化路径“的题目吗来看看小伙子你对复杂情况的理解。
小白嘿嘿这不巧了么这不是。 public String simplifyPath(String path) {DequeString dirOrFiles new ArrayDeque();for (String dirOrFile : path.split(/)) {// 如果文件不为空并且文件中有..字符那么文件夹就删除if (!dirOrFiles.isEmpty() dirOrFile.equals(..)) {dirOrFiles.removeLast();// 如果文件不是. 也不是空字符同时也不是..那么我们要将这个最后的} else if (!dirOrFile.equals(.) !dirOrFile.equals() !dirOrFile.equals(..)) {// 添加这个元素到队尾dirOrFiles.addLast(dirOrFile);}}// 创建简化后的pathStringBuilder simplified_path new StringBuilder();// 遍历dirOrFiles并且用/分割for (String dirOrFile : dirOrFiles) {simplified_path.append(/).append(dirOrFile);}return simplified_path.length() 0 ? / : simplified_path.toString();}小明OK完事儿等着面试官来表扬自己吧。他肯定会说小子你是个好手工位都给你准备好了工资你说了算。
面试官矮油不错啊我就是试试你下边还有一道题接着来。
小明OS今年这个找工市场人言洛阳花似锦偏我来时不逢春。。。不是这面试官好体力啊 更多算法题解请看 面试数据结构与算法总结分类leetcode目录【基础版】 编码道路漫漫只要先看脚下的路徐徐前进即可。