LeetCode71.简化路径

本文深入探讨了文件系统的绝对路径与相对路径概念,通过具体示例解释了两者的区别及如何通过栈数据结构简化路径处理。代码示例展示了如何在Java中实现路径简化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于相对路径和绝对路径:

绝对路径:(唯一的)绝对路径仅有一条

相对路径:从当前所在的位置到指定的位置

详细的引用 :https://blog.youkuaiyun.com/u011327334/article/details/50355600

我们通过一个例子来理解

eg:  绝对路径:   /a/../../b/../c//.//

我们要先进入a目录 然后退回到根目录......这自然而然就想到了栈的使用

好,栈,先将a目录压入栈中,遇到..,要返回,那就弹栈,栈又空了,又到了根目录,再..,根目录已经无法再退,然后进入b目录......

总结:1)当”.“表示当前目录,不做处理;
2)当”…"表示上一级目录,栈不为空时出栈,栈空时不做处理
3)其他情况统统入栈。

代码实现:

/*
	 * 利用栈
	 * 首先利用/号对数组进行分割
	 * 当为.时不管
	 * 当为..时,出栈
	 * 其他的情况入栈
	 */
	public String simplifyPath(String path) {
		Stack<String> stack=new Stack<>();//创建栈
		String[] split = path.split("/");//按照/划分
		if(split.length==0) return "/";//如果传入的只有"/"的话那么就返回"/"
		
		for(int i=1;i<split.length;i++) {
			String s=split[i].replaceAll(" ","");//替换
			if(!s.equals("")&&!s.equals(".")) {
				if(s.equals("..")&&!stack.isEmpty()){ //遇到..就要弹栈并且栈不为空
					stack.pop();
				}else if(s.equals("..")&&stack.isEmpty()){
					continue;
				}else {
					stack.push(s);
				}
			}
		}
		if(stack.isEmpty()) {
			return "/";
		}
		String s="";
		while(!stack.isEmpty()) {
			s="/"+stack.pop()+s;
		}
		return s;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值