71. Simplify Path
来源:互联网 发布:酷比魔方windows系统 编辑:程序博客网 时间:2024/06/12 00:59
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"
.
簡化路徑(Unix路徑表示),例如:
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
題解:
將path以"/"來切割文件夾名稱,並歷遍所有文件夾名稱,在歷遍過程中,利用stack紀錄路徑,有下面幾種情況:
- 遇到".",略過這個文件夾名稱
- 遇到"..",將stack排出一個文件夾名稱
- 遇到其他字符串則將該字符串加入stack當中
然後再將stack全部排出,用以組成簡化過的路徑名稱。
*注意coner case*
package LeetCode.Medium;import java.util.Stack;public class SimplifyPath { public String simplifyPath(String path) { if(path == null || path.length() == 0) { return "/"; } //將路徑以"/"的方式進行切割,切出每個文件夾的名稱 String[] names = path.split("/"); Stack<String> stack = new Stack<>(); //歷遍所有文件夾的名稱 for(int i = 0; i < names.length; i ++) { //若遇到"."則可以略過(相同文件夾) if(names[i].equals(".") == true || names[i].equals("")) { continue; } //若遇到".."則可以推出一個文件夾(上一個文件夾) if(names[i].equals("..") == true) { //需要避免stack為空的情況 if(stack.isEmpty() == false) { stack.pop(); } //其他情況則可以添加文件夾 } else { stack.push(names[i]); } } //若stack為空,可以直接輸出結果 if(stack.isEmpty() == true) { return "/"; } //開始進行結果的拼接 String result = ""; int i = 0; while(stack.isEmpty() == false) { String folder_name = stack.pop(); //首個文件夾前面不加"/",到最後才添加,避免混亂 if(i == 0) { result = folder_name; } else { result = folder_name + "/" +result; } i ++; } //在首個文件夾名稱前面添加"/" result = "/" + result; return result; }}
阅读全文
0 0
- LeetCode 71. Simplify Path
- LeetCode --- 71. Simplify Path
- [Leetcode] 71. Simplify Path
- [leetcode] 71.Simplify Path
- 71.Simplify Path
- 71.Simplify Path
- 71. Simplify Path
- [leetcode] 71.Simplify Path
- 71. Simplify Path
- Leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- Leetcode 71. Simplify Path
- 71. Simplify Path LeetCode
- 71. Simplify Path
- 71. Simplify Path
- 71. Simplify Path
- 71. Simplify Path
- leetcode 71. Simplify Path
- sed,awk笔记
- LCA
- java接口
- 谷歌访问助手(chrome版)安装方法
- python数据分析实践(三)
- 71. Simplify Path
- oneplus5刷机
- 关于Hibernate 在Junit测试中可以成功但是在Web下却无法运行的处理方法
- 《小白兔到大黑牛》第十六篇Scala学习总结
- C++ Builder快捷键
- 类人的普适的计算机视觉是如何感知这个世界的?
- js获取浏览器高度和宽度值
- 数组指针的三种定义形式
- 运行时权限