LeetCode - 71 - 简化路径 - java - 细喔

    • 该部分代码实现
    • 代码细节
  • 接下来,就是取出

    • 创建一个 StringBuilder ,来将讲栈内的信息存储。
    • 代码细节
  • 最后附上代码

题目

=================================================================

在这里插入图片描述


题目解析

===================================================================

题目大意:给我们一个文件目录路径。

在这里插入图片描述

就像上图上所示,给我们一个这样的文件路径,当然题目给的,还多了两个东西 “.” 和 “. .”,题目解释的也很清楚,一个点(.)表示当前目录本身;此外,两个点 ( . . ) 表示将目录切换到上一级(指向父目录)。

至此,我们明白了 题目提出的 文件路径。

接下就是题目的目的了!

题目要求我们删除 删除 “.” 和 “. .”,另外 “/”,返回值必须以它开头,且如果在存在 多目录的情况下,要用 “/” 隔开。还有,如果 只有一个文件名/一个目录 的情况下,例如 /home/,此时,只保留前面的 “/”。

当然,还有一个附加条件: 简化后的目录名顺序不变。(示例正在疯狂暗示你!)


解题思维 与 实现细节 - 利用 栈 和 deque双端队列来完成这题。

===================================================================================================

首先,我们先将题目所给出 字符串,以字符串"/" 进行分割,分割成一个字符串数组。另外先创建好 双端队列的类。


在这里插入图片描述

下面这张图,只是给你做参考用的,目的是是让你明白。stack 其实是是现在 deque 接口。

这也是为什么,这题能利用 栈 来解决问题。

另外,我们也可以得出一个结论: ArrayDeque类 也实现了 deque,不然,deque 是不用引用 ArrayDeque类的对象的。

在这里插入图片描述


然后我们就去遍历 字符串数组 str,将符合条件的数据放入栈中。

===============================================================================================

这里我们使用的 foreach 增强for循环。因为我们不关注 下标,我们只关注其值,

因为,我们创建一个栈,我们想要将 符合条件的数据放入栈中。所以我们用不到下标。

在这里插入图片描述

接下来就是将合适的数据,放入栈中

那么,问题来了:什么数据符合条件

首先,我们的数组str 元素中没有 “/”,因为我们是“/” 作为分割线, “/” 并不会当成数组元素存储起来。

所以,数组str中你那个的数据 就剩 “.” 、“. .”、文件名(字母和数字)。

再加上前面的题目分析:我们明白 “.” 和 “. .” 是不能出现的,所以这两个数据,不在 “合适”范围里。


还有一个细节来自于实例4:

在这里插入图片描述

我们都知道一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录)【题目解释】。

现在,你在看这题示例4: 文件 c 就是 就是 a 和 b 的父类目录。【a 与 b 属于同一级目录,都在父类目录下】

但是,返回结果:只有 父级目录。

这说明什么?在 数组 str中 遇到“. .”时,前面我们放入 目录名 要被删除,为后面的父类目录,做准备。

那么,可能有人产生疑问: 那同级目录这么快处理?

在这里插入图片描述

根据示例三;: 当然是 让它们都活着。

而且还有一个小细节:中间两个斜杠中间存在一个 字符串""【即:字符串长度为0】。

这是因为 我们利用 “/” 进行分割,产生的结果。将其作为 数组 str 的一个元素存储起来。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

总结

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。

这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!

Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
在这里插入图片描述

高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
[外链图片转存中…(img-FluoWfC8-1710697414647)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值