力扣71-简化路径
力扣71. 简化路径
一.题目描述
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/‘ 开头),请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//‘)都被视为单个斜杠 ‘/‘ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。
请注意,返回的 规范路径 必须遵循下述格式:
始终以斜杠 ‘/‘ 开头。
两个目录名之间必须只有一个斜杠 ‘/‘ 。
最后一个目录名(如果存在)不能 以 ‘/‘ 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘..’)。
返回简化后得到的 规范路径 。
示例 1:
1 | 输入:path = "/home/" |
示例 2:
1 | 输入:path = "/../" |
示例 3:
1 | 输出:"/home/foo" |
示例 3:
1 | 输入:path = "/a/./b/../../c/" |
提示:
1 <= path.length <= 3000
path 由英文字母,数字,’.’,’/‘ 或 ‘_’ 组成。
path 是一个有效的 Unix 风格绝对路径。
二.笔者理解
此题是一道路径文字理题,在日常生活中极为常见,在力扣中被定义为中等题。
三.解法
1.本题将已知路径名称以路径中的”/“字符做分割,分割为字符串数组
2.本题可将字符串数组分为三类
1) 需要添加的路径
2) 需要忽略的路径名称”.”、”空”(因为”/“分割后为空)
3) 需要返回上级目录(删除已存入的最后目录)”..“
用队列与栈的思想一起实现
1 | class Solution { |
时间与空间效率

总结
本题使用了deque函数,用栈和队列思想一起完成了对文字的处理,作者发现很多文字处理题都是用到了栈思想,对文字类题目可以可以优先考虑用分类处理法理清处理思路
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 随意!
评论
ValineDisqus




