LeetCode刷题笔录Simplify Path
来源:互联网 发布:js原型链的理解 编辑:程序博客网 时间:2024/05/16 10:29
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:
这题需要用到一个stack,利用"/"来分割出每一个substring。"/"本身则不做处理直接跳过,再最后构造结果string的时候再按照规则加上/,这样就可以不用管连续有很多个/的情况。- 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"
.
substring处理如下:
1.如果是".",什么都不做
2.如果是"..",从stack里pop出一个元素
3.如果是一般字符串,push进stack
最后把stack里的元素按照栈底到栈顶的顺序接在一起就行了。
public class Solution { public String simplifyPath(String path) { if(path == null || path.length() == 0) return ""; LinkedList<String> stack = new LinkedList<String>(); char[] arr = path.toCharArray(); int i = 0; while(i < arr.length){ if(arr[i] == '/'){ i++; continue; } int start = i; int end = start; while(end < arr.length && arr[end] != '/') end++; i = end; String sub = path.substring(start, end); if(sub.equals(".")){ continue; } else if(sub.equals("..")){ if(!stack.isEmpty()) stack.remove(stack.size() - 1); } else{ stack.add(sub); } } StringBuffer str = new StringBuffer("/"); if(stack.isEmpty()) return str.toString(); while(!stack.isEmpty()){ str.append(stack.pollFirst()).append("/"); } str.deleteCharAt(str.length() - 1); return str.toString(); }}
0 0
- LeetCode刷题笔录Simplify Path
- [leetcode刷题系列]Simplify Path
- LeetCode刷题笔录Minimum Path Sum
- LeetCode刷题笔录Path Sum
- LeetCode刷题笔录Path Sum II
- LeetCode刷题笔录Binary Tree Maximum Path Sum
- LeetCode: Simplify Path
- LeetCode Simplify Path
- LeetCode : Simplify Path
- [Leetcode] Simplify Path
- [leetcode] simplify path
- [LeetCode] Simplify Path
- leetcode 100: Simplify Path
- [leetcode]Simplify Path
- [LeetCode]Simplify Path
- [leetCode] Simplify Path
- [leetcode]Simplify Path
- [leetcode] Simplify Path
- Java笔记一:Java开发、运行环境搭建
- MFC透明Edit
- Java笔记二:Java常用系统类
- 给IT新人的15个建议:苦逼程序员的辛酸反省与总结
- Java笔记三:Java的异常处理机制
- LeetCode刷题笔录Simplify Path
- TranslateAnimation详解
- Google Chrome Postman插件的下载、安装、使用
- 5个常用Java代码混淆器 助你保护你的代码
- Python标准库:内置函数all(iterable)
- phpcms v9域名更换处理方法
- Differences Between PyQt4 and PyQt5
- 关于使用cspreadsheet读写EXCEL表格数据的问题
- 总结10-29