Leetcode71- Simplify Path
2017-12-28 10:23
477 查看
1. 题目:
给定一个Unix系统下的路径,简化这个路径。
如 /home/ ,简化后为 /home
如 /a/./b/../../c/ ,简化后为 /c
2. 思路:
这还是一个入栈出栈匹配问题
构造无效字符集合 = {"",".",".."}
将字符串split成字符串数组
遍历字符串数组{
如果元素等于“..”且栈不为空
出栈一个元素
如果元素不在无效字符内
入栈当前元素
}
构造返回值,记得考虑空值的情况
用这个思路去跑一下测试用例
/home/
/...
/a/./b/../../c/
代码:
public static String simplifyPath(String path) {
String[] a = path.split("/");
Set skip = new HashSet(Arrays.asList("..",".",""));
Stack<String> stack = new Stack<String>();
for(int i = 0;i <a.length; i++){
if(a[i].equals("..") && !stack.isEmpty())
stack.pop();
else if(!skip.contains(a[i]))
stack.push(a[i]);
}
// String res = "";
// for (String dir : stack) res = "/" + dir + res;
// return res.isEmpty() ? "/" : res;
StringBuffer sb = new StringBuffer();
//遍历这个栈,构造返回值
while(!stack.isEmpty()){
sb = sb.append("/" + stack.pop());
}
return sb.toString().isEmpty()?"/":sb.toString();
}
给定一个Unix系统下的路径,简化这个路径。
如 /home/ ,简化后为 /home
如 /a/./b/../../c/ ,简化后为 /c
2. 思路:
这还是一个入栈出栈匹配问题
构造无效字符集合 = {"",".",".."}
将字符串split成字符串数组
遍历字符串数组{
如果元素等于“..”且栈不为空
出栈一个元素
如果元素不在无效字符内
入栈当前元素
}
构造返回值,记得考虑空值的情况
用这个思路去跑一下测试用例
/home/
/...
/a/./b/../../c/
代码:
public static String simplifyPath(String path) {
String[] a = path.split("/");
Set skip = new HashSet(Arrays.asList("..",".",""));
Stack<String> stack = new Stack<String>();
for(int i = 0;i <a.length; i++){
if(a[i].equals("..") && !stack.isEmpty())
stack.pop();
else if(!skip.contains(a[i]))
stack.push(a[i]);
}
// String res = "";
// for (String dir : stack) res = "/" + dir + res;
// return res.isEmpty() ? "/" : res;
StringBuffer sb = new StringBuffer();
//遍历这个栈,构造返回值
while(!stack.isEmpty()){
sb = sb.append("/" + stack.pop());
}
return sb.toString().isEmpty()?"/":sb.toString();
}
相关文章推荐
- 【LeetCode】71. Simplify Path
- LeetCode(71) Simplify Path
- leetcode-71 simplify path
- LeetCode71 Simplify Path 解题报告
- leetcode 71: Simplify Path
- LeetCode_71---Simplify Path
- [LeetCode]71 Simplify Path(模拟)
- [Leetcode 60] 71 Simplify Path
- [leetcode 71] Simplify Path
- leetcode[71]Simplify Path
- 【Leetcode】71 Simplify path 简化路径
- LeetCode 71 Simplify Path(Python详解及实现)
- 【leetcode】【71】Simplify Path
- LeetCode 71: Simplify Path
- LeetCode 71 Simplify Path (栈)
- LeetCode-71-Simplify Path 无聊模拟
- 【LeetCode】C# 71、Simplify Path
- LeetCode(71) Simplify Path
- leetcode——71——Simplify Path
- leetcode || 71、Simplify Path