LeetCode - Simplify Path
2015-04-04 04:45
288 查看
https://leetcode.com/problems/simplify-path/
Given an absolute path for a file (Unix-style), simplify it.
For example,
path =
path =
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
such as
In this case, you should ignore redundant slashes and return
这道题就是利用栈,把所有的 ‘/’ 都略过,只看斜杠中间的字符串,如果是 “.” 就啥也不做,如果是“..”就从stack里面pop一个元素,如果stack这时候是空的,就啥也不做,如果是别的,就push到stack里面,到最后根据stack写出simplified path,注意这时候stack存储的path顺序是反的,所以每次要往前加,而不是在后面加。
注意这里因为输入都是absolute path,所以不会有'../ab'这种情况
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".
这道题就是利用栈,把所有的 ‘/’ 都略过,只看斜杠中间的字符串,如果是 “.” 就啥也不做,如果是“..”就从stack里面pop一个元素,如果stack这时候是空的,就啥也不做,如果是别的,就push到stack里面,到最后根据stack写出simplified path,注意这时候stack存储的path顺序是反的,所以每次要往前加,而不是在后面加。
注意这里因为输入都是absolute path,所以不会有'../ab'这种情况
public String simplifyPath(String path) { if(path == null || path.length()==0) return ""; Stack<String> stack = new Stack<String>(); int i=0; while(i<path.length()){ while(i<path.length() && path.charAt(i)=='/') i++; if(i==path.length()) break; int j=i; while(j<path.length() && path.charAt(j)!='/') j++; String current = path.substring(i, j); i=j; if(current.equals(".")) continue; else if(current.equals("..")){ if(!stack.empty()) stack.pop(); } else stack.push(current); } if(stack.empty()) return "/"; StringBuilder sb = new StringBuilder(); while(!stack.empty()){ sb.insert(0, stack.pop()); sb.insert(0, '/'); } return sb.toString(); }
相关文章推荐
- [leetcode] Simplify Path
- LeetCode(71) Simplify Path
- LeetCode71 Simplify Path 解题报告
- Leetcode 71. Simplify Path
- LeetCode71 Simplify Path
- leetcode:字符串之Simplify Path
- [LeetCode] Simplify Path 简化路径
- LeetCode-Simplify Path
- 【LeetCode】71. Simplify Path
- [LeetCode]Simplify Path
- 【Leetcode】71 Simplify path 简化路径
- leetcode Simplify Path
- [LeetCode]Simplify Path
- [LeetCode] Simplify Path,文件路径简化,用栈来做
- 【leetcode】【71】Simplify Path
- [LeetCode] Simplify Path
- LeetCode | Simplify Path
- leetcode 71. Simplify Path
- [leetcode]Simplify Path
- [leetcode刷题系列]Simplify Path