(栈)leetcode71. 简化路径
创始人
2024-05-29 00:30:19
0

文章目录

  • 一、题目
    • 1、题目描述
    • 2、基础框架
    • 3、原题链接
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、本题小知识

一、题目

1、题目描述

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,‘//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,‘…’)均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

始终以斜杠 ‘/’ 开头。
两个目录名之间必须只有一个斜杠 ‘/’ 。
最后一个目录名(如果存在)不能 以 ‘/’ 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘…’)。
返回简化后得到的 规范路径 。

示例 1:
输入:path = “/home/”
输出:“/home”
解释:注意,最后一个目录名后面没有斜杠。

示例 2:
输入:path = “/…/”
输出:“/”
解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。

示例 3:
输入:path = “/home//foo/”
输出:“/home/foo”
解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。

示例 4:
输入:path = “/a/./b/…/…/c/”
输出:“/c”

2、基础框架

  • C++版本给出的基础框架如下:

3、原题链接

https://leetcode.cn/problems/simplify-path/

二、解题报告

1、思路分析

  (1)(1)(1)将字符串通过"/“进行分割得到字符串数组。
  (2)(2)(2)创建栈list,遍历字符串数组,如果遇到”…“,并且栈中有值,则出栈。如果遇到非”“和非”.“,则将当前字符串拼接在”/“之后入栈。
  (3)(3)(3)遍历结束后如果栈为空,则入栈”/"
  (4)(4)(4)最后将栈中所有元素进行拼接。

2、时间复杂度

时间复杂度为O(n),空间复杂度为O(N)

3、代码详解

class Solution {public String simplifyPath(String path) {String[] s = path.split("/");List list = new ArrayList<>();for (int i = 0; i < s.length; i++) {if ("..".equals(s[i])){if(list.size() > 0) {list.remove(list.size()-1);list.remove(list.size()-1);}}else if (!"".equals(s[i]) && !".".equals(s[i])) {list.add("/");list.add(s[i]);}}if (list.size() == 0) return "/";String re = "";for (int i = 0; i < list.size(); i++) {re += list.get(i);}return re;} 
}

三、本题小知识

1.注意字符串的比较,要用equals

相关内容

热门资讯

欧尚改装安卓系统,打造智能驾驶... 你有没有想过,你的欧尚汽车其实也可以变身成为智能座驾呢?没错,就是那个你每天上下班的伙伴——欧尚,现...
安卓系统最新事件,揭秘最新重大... 你知道吗?最近安卓系统可是发生了一件超级大事件,简直让人兴奋得心跳加速!这不,我就迫不及待地来和你分...
早期电话手表安卓系统,安卓系统... 你有没有想过,小时候那些看似简单的玩具,现在竟然也能玩出花来?比如,早期的电话手表,那时候的功能可真...
安卓老系统手机游戏,安卓老系统... 你有没有发现,那些安卓老系统手机,虽然看起来有点古老,但它们在游戏界可是有着自己独特的魅力呢!想象那...
安卓系统重启还是开关,重启与开... 手机突然卡壳了,是不是又该给安卓系统来个重启大法了?别急,今天就来聊聊这个让人又爱又恨的“安卓系统重...
安卓系统刷入iso,轻松实现个... 你有没有想过,你的安卓手机其实可以像变形金刚一样,换上全新的“皮肤”?没错,就是刷入ISO系统!这可...
安卓机系统无法关机,探究原因与... 最近我的安卓手机怎么啦?总是关机不成功,真是让人头疼啊!这可怎么办呢?别急,让我来帮你分析找出解决这...
安卓什么系统广告最多,揭秘最新... 你有没有发现,每次打开安卓手机,广告就像无处不在的小精灵,跳来跳去,让人眼花缭乱?今天,就让我带你一...
禁止中国使用安卓系统,“安卓系... 你知道吗?最近互联网上掀起了一股热议,那就是关于中国是否应该禁止使用安卓系统的话题。这可不是闹着玩的...
如何分辨ios系统和安卓系统,... 你有没有想过,你的手机里装的是iOS系统还是安卓系统呢?这两种系统各有千秋,但分辨它们其实并不难。今...
如何查询安卓系统版本,安卓系统... 你有没有想过,你的安卓手机里隐藏着一个小秘密——那就是它的系统版本!知道这个秘密,不仅能让你更好地了...
lg电视系统和安卓系统比较,性... 你有没有发现,现在家里的电视已经不再是那个傻乎乎的“大盒子”了?它变得聪明起来,能和你互动,能上网,...
安卓系统增加主页按钮,Andr... 你知道吗?最近安卓系统又来了一次大更新,其中最引人注目的变化之一就是主页按钮的全新设计。这可不是一个...
安卓刷win系统机型,探索兼容... 你有没有想过,你的安卓手机竟然也能变身成为Windows系统的电脑呢?没错,这就是今天我要跟你分享的...
安卓系统pdf打不开,安卓系统... 你是不是也遇到了安卓系统打不开PDF文件的尴尬情况?别急,今天就来给你详细解析一下这个问题的原因和解...
微信安卓系统降级,轻松回退至旧... 你知道吗?最近微信安卓系统降级的事情可是闹得沸沸扬扬的。不少小伙伴都在问,这到底是怎么回事呢?别急,...
安卓手机系统会卡顿,安卓手机系... 你有没有发现,你的安卓手机最近有点儿“慢吞吞”的?是不是觉得打开应用要等半天,滑动屏幕都卡得让人抓狂...
安卓系统怎么关钥匙,轻松掌握钥... 手机里的安卓系统,是不是有时候让你觉得有点儿头疼?比如,当你想关掉手机,却发现钥匙在哪里呢?别急,今...
安卓系统有隐私空间,打造安全私... 你知道吗?在智能手机的世界里,安卓系统可是个超级明星呢!它不仅功能强大,而且现在还悄悄地给你准备了一...
安卓系统设置角标,打造专属通知... 你有没有发现,手机上的安卓系统设置里有个神奇的小功能——角标?这个小东西虽然不起眼,但作用可大了去了...