LeetCode71.简化路径

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

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

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

详细的引用 :https://blog.csdn.net/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;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值