71. Simplify Path
2016-06-03 17:04
225 查看
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
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”.
思路:先把
代码:
For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
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”.
思路:先把
String用
/分割成不同的子串,然后对子串内容判断。
代码:
public class Solution { public String simplifyPath(String path) { Deque<String> pathStack =new LinkedList<String>(); String[] strs = path.split("/"); for(int i=0; i<strs.length;++i) { if(strs[i].equals(".") || strs[i].length()==0) { continue; } else if(strs[i].equals("..")) { if(!pathStack.isEmpty()) { pathStack.removeFirst(); } } else{ pathStack.addFirst(strs[i]); } } StringBuilder result= new StringBuilder(); Iterator<String> iter = pathStack.iterator(); while(iter.hasNext()) { String c= iter.next(); result.insert(0, c); result.insert(0,"/"); } if(result.length()==0) result.insert(0,"/"); return result.toString(); } }
相关文章推荐
- 第十五周项目1:阅读程序,领会STL用法(3)
- UVA1637Double Patience(概率 + 记忆化搜索)
- iOS设置圆角的几种方式
- mybatis 中 foreach collection的三种用法
- Servlet建立一个图片验证码程序
- mingw 编译 boost出错解决办法
- 从头到尾彻底理解傅里叶变换算法(上)
- XlLineStyle 枚举 (Excel)
- Android Studio 使用中的相关“Bug”记录
- c#泛型结合Linq实现从数据源中截取指定位置,行数的数据
- hdu 1021 Fibonacci Again 找规律
- 成员变量作为成员函数的默认参数
- 21、Dom元素的灵活查找--通过className条件筛选
- 字符串转化为Date兼容性问题
- 欢迎使用CSDN-markdown编辑器
- 卡顿检测---来自老谭
- 似然函数的理解
- 如何在googleplay上发布应用?
- React Native第一个Demo(1)
- 一个用x86汇编编写的、页式管理、图形化的CS -- Boot篇