[LeetCode]--71. Simplify Path

Given an absolute path for a file (Unix-style), simplify it.

For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
click to show corner cases.

Corner Cases:
Did you consider the case where path = “/../”?
In this case, you should return “/”.
Another corner case is the path might contain multiple slashes ‘/’ together, such as “/home//foo/”.
In this case, you should ignore redundant slashes and return “/home/foo”.

这个题目重点就是要理解它的意思,如果是一个点 . 那就是当前路径,不管,如果是两个点 .. 那就是当前路径的上一个目录。这样我们用栈来表示的话,就是如下所示

path:"/a/./b/../../c/"split:"a",".","b","..","..","c"stack:push(a), push(b), pop(b), pop(a), push(c) --> c

明白这个之后就一目了然了,就是注意返回的时候如果是”/”或者”/../”这种情形就行。

public String simplifyPath(String path) {String res = "";String[] arrs = path.split("/");Stack<String> s = new Stack<String>();for (int i = 0; i < arrs.length; i++) {if (arrs[i].equals("")) {continue;}if (!arrs[i].equals(".") && !arrs[i].equals("..")) {s.push(arrs[i]);}if (arrs[i].equals("..") && !s.isEmpty()) {s.pop();}}if (s.isEmpty())return "/";while (!s.isEmpty())res = "/" + s.pop() + res;return res;}

另一种链表的做法

public String simplifyPath1(String path) {String result = "/";String[] stubs = path.split("/+");ArrayList<String> paths = new ArrayList<String>();for (String s : stubs){if(s.equals("..")){if(paths.size() > 0){paths.remove(paths.size() - 1);}}else if (!s.equals(".") && !s.equals("")){paths.add(s);}}for (String s : paths){result += s + "/";}if (result.length() > 1)result = result.substring(0, result.length() - 1);
        return result;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOPLL动态重配

连接 Avalon -MM接口 mgmt_waitrequest:当 PLL 重配置进程开始后&#xff0c;此端口变高并在 PLL 重配置期间保持高电平。 PLL 重配置进程完成后&#xff0c;此端口变低。 I/O PLL重配写操作步骤&#xff1a; 1、 为mgmt_address和mgmt_writedata设置有效值&#xff0c;并且…

android 的属性动画

public void zyluoti(View v){ValueAnimator animator ValueAnimator.ofFloat(0,screenHeight - mImageView.getHeight());//设置属性动画的值&#xff0c;值的类型为floatanimator.setDuration(1000);//动画的作用时间animator.setTarget(mImageView);//设置动画的作用目标an…

qt中如何模拟按钮点击_如何快速在 Shopify 中加入按钮

假如你会 CSS , HTML , JS 三件套&#xff0c;那么修改 Shopify 代码将不会太难&#xff08;毕竟一个模板中的代码量还是挺多的&#xff0c;除非深入研究了代码&#xff0c;不然改起来还是会比较麻烦的&#xff09;。但挺多玩家是不会这三件套的&#xff0c;修改代码来达到添加…

clear ,refresh,free

itab 即是内表也是工作区的情况下&#xff0c;即with header line. clear itab&#xff0c;仅清空HEADER LINE&#xff0c;对内表数据存储空间不影响&#xff0c;保留内存区。 refresh itab&#xff0c;不清空HEADER LINE&#xff0c;清除内表数据存储空间&#xff0c;但保存内…

浅谈关于java中的深浅拷贝

一.浅拷贝(shallow copy) 1.如何实现浅拷贝? Object类 是所有类的直接或间接父类,Object中存在clone方法,如下 protected native Object clone() throws CloneNotSupportedException; 如果想要使一个类的对象能够调用clone方法 ,则需要实现Cloneable接口, 并重写 clone方法: p…

iOS开发-Protocol协议及委托代理(Delegate)传值

前言&#xff1a;因为Object&#xff0d;C是不支持多继承的&#xff0c;所以很多时候都是用Protocol&#xff08;协议&#xff09;来代替。Protocol&#xff08;协议&#xff09;只能定义公用的一套接口&#xff0c;但不能提供具体的实现方法。也就是说&#xff0c;它只告诉你要…

git 查看分支编码_12个常用的Git命令,赶紧记一波!

今天齐姐简单讲下 Git 的实现原理&#xff0c;知其所以然才能知其然&#xff1b;并且梳理了日常最常用的 12 个命令&#xff0c;分为三大类分享给你。本文的结构如下&#xff1a;作者和开发原由Git 的数据模型常用命令资源推荐作者和开发原由Talk is cheap. Show me the code.这…

在域环境下搭建samba服务器

环境&#xff1a;samba&#xff1a;smbserver&#xff1a; 192.168.0.18AD:rise.com&#xff1a;192.168.0.37组&#xff1a;zixun xingzheng teacher class admin共享目录:zixun xingzheng xueshu other一.安装Samba服务器yum install -y samba二.把linux加入到ad中1.先…

Android NDK编程,引入第三方.so库

android自带的编译工具NDK进行编译时&#xff08;非单纯的调用第三方.so而是进行ndk编程&#xff09;&#xff0c;armeabi以及armeabi-v7a文件夹下的第三方so文件将会被删除&#xff0c;只会产生编译后的so文件&#xff0c;其他的so文件将无法引入,现在我们就来解决&#xff1a…

会做饭的机器人曰记_颜真卿《麻姑仙坛记》:苍劲古朴,体态沉雄,气象宏大...

《麻姑仙坛记》&#xff0c;全称《有唐抚州南城县麻姑山仙坛记》&#xff0c;或称《麻姑山仙坛记》。颜真卿撰并书于大历六年&#xff08;771&#xff09;四月。此碑有大、中、小三种刻本&#xff0c;且原石均佚&#xff0c;原拓佳本亦难得。大字本&#xff0c;字径约5厘米&…

IBM服务器硬盘出现Other Error可能原因

除了确实物理等因素外&#xff0c;可能还因为&#xff1a;Other Errors的 很有可能也是固件(firmware)版本太低造成。 固件版本太低的话&#xff0c;硬盘自身有power safe模式&#xff0c;在硬盘长时间没有I/O情况下&#xff0c;硬盘会自动断电&#xff0c;而系统本身误以为是硬…

怪异模式

众所周知,HTML文档结构可分为:文档声明<!DOCTYPE HTML>、HTML元素&#xff08;根元素/根标记/根标签/祖先元素&#xff09;、head元素、body元素。 文档声明是用来通知浏览器&#xff0c;目前的文档正使用哪个HTML版本&#xff0c;如果我们不写文档声明<!DCOTYPE HTML…

Metro UI 菜单(Winform)

我有个项目需要要到菜单导航&#xff0c;就自己动作做了一个&#xff0c;感觉还可以&#xff0c;分享给大家。下载地址:http://files.cnblogs.com/files/dyj057/MetroUIMenu.zip 主要代码&#xff1a; private void SetElements(){if (Elements null) return;int eWidth Bord…

echarts 山东地图_用Python画中国地图,实现各省份数据可视化

第一步&#xff1a;安装pyechartspyecharts是一款将python与echarts结合的强大的数据可视化工具&#xff0c;本文使用了0.1.9.4版本pip install pyecharts0.1.9.4第二步&#xff1a;读取数据我的数据是在Excel表格里&#xff0c;如下图&#xff1a;Execel数据使用xlrd(没有就通…

mysql 中某个字段相同的数据拼接起来

2019独角兽企业重金招聘Python工程师标准>>> mysql> select name, GROUP_CONCAT( age SEPARATOR ‘#’) from student group by name; ——————————————————— | name | GROUP_CONCAT( age SEPARATOR ‘#’) | ———————————————…

微信红包系统架构的设计和优化分享

微信红包系统架构的设计和优化分享 编者按&#xff1a;经过2014年一年的酝酿&#xff0c;2015微信红包总量创下历史新高&#xff0c;峰值1400万次/秒&#xff0c;8.1亿次每分钟&#xff0c;微信红包收发达10.1亿次&#xff0c;系统整体运行平稳, 在这里我分享下微信红包背后的技…

Jquery各版本下载

jquery-2.1.4 (注&#xff01;jquery-2.0以上版本不再支持IE 6/7/8) 百度引用地址 (推荐目前最稳定的&#xff0c;不会出现延时打不开情况) 百度压缩版引用地址: <script src"http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> 微软压缩版引…

python list方法操作_Python 列表(List)操作方法详解

参考文献来源于脚本之家列表是Python中最基本的数据结构&#xff0c;列表是最常用的Python数据类型&#xff0c;列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置&#xff0c;或索引&#xff0c;第一个索引是0&#xff0c;第二个索引是1&#xff…

FastDFS单机版安装教程

安装清单如下&#xff1a; 一、安装FastDFS 1. 安装libfastcommon 先解压安装包到目录 # unzip libfastcommon-1.0.36.zip 安装编译工具及环境&#xff08;后面Nginx也会用到这些依赖环境&#xff09; # yum -y install gcc gcc gcc-c openssl openssl-devel pcre pcre-deve #…

【原创】Chrome最新版(53-55)再次爆出BUG!

2019独角兽企业重金招聘Python工程师标准>>> 前言 今年十月份&#xff0c;我曾发布一篇文章《Chrome53 最新版惊现无厘头卡死 BUG&#xff01;》&#xff0c;不过那个BUG在最新的 Chrome 54 中已经修正。 而今天即将发布的Chrome弱智BUG&#xff1a; 仅 Chrome 53 -…