Leetcode: Simplify Path
2015-09-13 13:58
429 查看
Question
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”.
Hide Tags Stack String
My first try
[code]class Solution(object): def simplifyPath(self, path): """ :type path: str :rtype: str """ if path=='': return '' path = path.split('/') vis = [True]*len(path) for ind in range(len(path)): if path[ind]=='' or path[ind]=='.': vis[ind]=False if path[ind]=='..': vis[ind]=False if ind>0: vis[ind-1] = False temp = [ path[ind] for ind in range(len(path)) if vis[ind]==True] temp = '/'.join(temp) return '/'+temp
Error
[code]Input: "/a/./b/../../c/" Output: "/a/c" Expected: "/c"
My Solution
time complexity: O(n)space complexity: O(n)
[code]class Solution(object): def simplifyPath(self, path): """ :type path: str :rtype: str """ if path=='': return '' path = path.split('/') vis = [True]*len(path) for ind in range(len(path)): if path[ind]=='' or path[ind]=='.': vis[ind]=False if path[ind]=='..': vis[ind]=False for tind in range(ind-1,-1,-1): if vis[tind]==True: vis[tind]=False break temp = [ path[ind] for ind in range(len(path)) if vis[ind]==True] temp = '/'.join(temp) return '/'+temp
Other’s Solution
Get idea from here, here2.相关文章推荐
- Xcode5和6共处,如何发布应用程序存储
- windows编程注意点(持续更新)
- C++位操作符总结
- js面向对象的例子(私有/公有/特权方法)-2
- 布线问题 38 (最小生成树 prim)
- Android Studio系列-签名打包
- 获取网页字符编码的正则表达式
- ACM比赛需知
- 1103. Integer Factorization (30)
- react-利用Atom搭建开发环境
- 系统UIRefreshControl 的简单使用代码
- jquery select三级联动
- 最小化安装centos7不能执行ifconfig命令的解决方法
- Nginx安装部署
- 强制IE浏览器或WebBrowser控件使用指定版本显示网页
- error Unknow type name "NSString"
- GMT5.1.2_基础_坐标轴的设置和离散点的样式控制
- Java中Map相关的快速查找算法
- Android4.4的zygote进程(下)
- JVM结构、GC工作机制详解