
71 简化路径(模拟、栈)
将路径分割成各个部分,使用斜杠 / 作为分隔符。 遍历每个部分: 最后,根据栈内容生成路径。 分割路径:使用 栈初始化:创建一个栈来管理目录层级。 遍历处理:每个部分检查是否为双点或点,分别处理。其他部分压入栈。 生成路径:根据栈内容生成最终路径,处理斜杠的位置,确保路径正确无误。
发布日期:2021-05-07 21:50:04
浏览次数:12
分类:精选文章
本文共 1441 字,大约阅读时间需要 4 分钟。
用栈解决路径简化问题的方法
在处理文件路径时,Unix 系统中的点和双点(. 和 ..)具有特定的含义。点(.)表示当前目录,而双点(..)表示上一级目录。因此,我们需要将给定的路径简化为规范路径。
方法思路
为了简化路径,可以使用栈来模拟目录的层级。每当遇到双点(..)时,栈弹出一个元素,表示返回上一级目录。点(.)则表示当前目录,不需要处理。其他目录名则被压入栈。
具体步骤如下:
- 如果是双点(..),弹出栈顶元素。
- 如果是点(.)或空字符串,忽略。
- 其他情况,压入栈。
解决代码
import java.util.Stack;import java.util.Scanner;public class Solution { public static String simplifyPath(String path) { String[] parts = path.split("/"); Stackstack = new Stack<>(); for (String part : parts) { if (part.equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } else if (!part.equals(".") && !part.equals(" ") && !part.equals("")) { stack.push(part); } } if (stack.isEmpty()) { return "/"; } StringBuilder result = new StringBuilder(); for (int i = 0; i < stack.size(); i++) { if (i != 0) { result.append('/'); } result.append(stack.get(i)); } return result.toString(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(simplifyPath(scanner.nextLine())); }}
代码解释
split("/")
将路径分割成各个部分。这种方法简洁高效,能够处理各种复杂路径情况,确保结果是规范且最短的路径。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月28日 07时00分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode 116填充每个节点的下一个右侧结点指针
2019-03-04
2021-4-28【PTA】【L2-1 包装机 (25 分)】
2019-03-04
Arduino mega2560+MPU6050利用加速度值控制舵机
2019-03-04
pycharm+python+MS SQLSERVER 实战2、实现爬虫程序。
2019-03-04
紫书——蛇形填数
2019-03-04
刷题计划1——poj1753
2019-03-04
蓝桥杯备战——刷题(2019)
2019-03-04
未定义的变量“py”或函数“py.command”
2019-03-04
最短路径问题—Dijkstra算法
2019-03-04
A Guide to Node.js Logging
2019-03-04
webwxbatchgetcontact一个神奇的接口
2019-03-04
Edge浏览器:你的的内核我的芯
2019-03-04
git命令升级版用法
2019-03-04
checksec未完待续~
2019-03-04
怎么去利用已有的数据做分析?
2019-03-04
【考研高数-高等数学-基础】第四章 不定积分
2019-03-04
【考研英语-基础-简单句】简单句的核心变化_谓语情态
2019-03-04
数据结构 第五章 二叉树-1
2019-03-04
PVE+集客AC+K2T-AP
2019-03-04
Jetson AGX Xavier硬件自启动
2019-03-04