-
- 该部分代码实现
-
- 代码细节
-
接下来,就是取出
-
- 创建一个 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开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。
这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。
最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!
Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
高性能、分布式,性能优化,微服务 高级架构开发等等。
还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
[外链图片转存中…(img-FluoWfC8-1710697414647)]