71. Simplify Path压缩文件的绝对路径
[抄题]:
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
[暴力解法]:
时间分析:
空间分析:
[优化后]:
时间分析:
空间分析:
[奇葩输出条件]:
[奇葩corner case]:
空格属于不需要输出的特例,所以先存到hashset中
deque中啥也没有,就输出/
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".
[思维问题]:
[一句话思路]:
用push pop从一端把该存的存入,用for循环从另一端输出
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:

[一刷]:
- hashset<>(),括号中表示要构造的内容,把array函数放进去
Arrays.asList("..",".","")
[二刷]:
- deque非空才能POP
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
用push pop从一端把该存的存入,用for循环从另一端输出
[复杂度]:Time complexity: O(n) Space complexity: O(n)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
从左往右走:
"/b/c/" - directory 'b ' - > directory 'c '
"." - current directory
"./" - current directory
"../" - one directory up
e.g
"/" : root directory
"b/c/../" : it will go from c to b
"c/b/./" : it is still in directory b
[算法思想:递归/分治/贪心]:
[关键模板化代码]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
class Solution {
public String simplifyPath(String path) {
//cc
//ini: deque, set,put into deque
Deque<String> deque = new LinkedList<>();
Set<String> set = new HashSet<>(Arrays.asList("",".",".."));
for (String w : path.split("/")) {
if (w.equals("..") && !deque.isEmpty()) deque.pop();
else if (!set.contains(w)) deque.push(w);
}
//get from deque, res
String res = "";
for (String words : deque)
res = "/" + words + res;
return res.isEmpty() ? "/" : res;
}
}
71. Simplify Path压缩文件的绝对路径的更多相关文章
- 【LeetCode】71. Simplify Path 解题报告(Python)
[LeetCode]71. Simplify Path 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://f ...
- 71. Simplify Path(M)
71. Simplify Path Given an absolute path for a file (Unix-style), simplify it. For example, path = & ...
- 【LeetCode】71. Simplify Path
Simplify Path Given an absolute path for a file (Unix-style), simplify it. For example,path = " ...
- [LeetCode] Simplify Path,文件路径简化,用栈来做
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- [LeetCode] 71. Simplify Path 简化路径
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- 71. Simplify Path
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- 【一天一道LeetCode】#71. Simplify Path
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- Leetcode#71 Simplify Path
原题地址 用栈保存化简后的路径.把原始路径根据"/"切分成若干小段,然后依次遍历 若当前小段是"..",弹栈 若当前小段是".",什么也不做 ...
- 71. Simplify Path (Stack)
Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", ...
随机推荐
- QT4.8.6静态编译
下载源安装程序,http://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz 解压 cd 进 ...
- 10.Python运行Scrapy时出现错误: ModuleNotFoundError: No module named 'win32api'
1.在命令行输入:scrapy crawl demo(demo为爬虫标识,是唯一的) 2.报错信息如下所示: 3.解决方法:https://github.com/mhammond/pywin32/re ...
- 在Mac OS上搭建Python的开发环境
本文转载自:http://www.jb51.net/article/76931.htm 一. 安装python mac系统其实自带了一个python的执行执行环境,用来运行python还行,但是开发可 ...
- Excel if函数无法正确对比大小
我想完成以下操作 1.提取A列数字的第7-11位的数字 2.若此数字大于1993 3.则返回20,不然返回0 于是我在B和C列上写了两个函数,分别是 MID(A1,7,4) IF(B ...
- appium 滑动封装
#获得机器屏幕大小x,y def getSize(): x = dr.get_window_size()['width'] y = dr.get_window_size()['heig ...
- 20165226 2017-2018-4 《Java程序设计》第8周学习总结
20165226 2017-2018-4 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章 创建线程的方式有三种,分别是: - 继承Thread类创建线程,程序中如果想要获取 ...
- 007:MySQL SSL
一. SSL安装 SSL(Secure Socket Layer)是维护Client - Server之间加密通讯的一套安全协议: --默认ssl未开启 mysql> show variable ...
- Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(1)
一.本系列分为6部分 1.Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入 2.Centos 6.5 下安装 Zabbix server 3.0服务器的安 ...
- python mac下使用多进程报错解决办法
使用pychram运行python web,web使用了多进程 mac下运行会提示如下: may have been in progress in another thread when fork() ...
- OD 实验(三) - 破解程序的文件验证
需要破解的程序 双击程序,提示需要许可证文件 逆向程序 用 OD 打开 LoadIconA 为加载图标 LoadCursorA 为加载鼠标 F8 走一下程序 走到了这里,调用了 CreateFileA ...