Simplify Path
来源:互联网 发布:mac自带软件哪些可以删 编辑:程序博客网 时间:2024/05/17 08:50
-----QUESTION-----
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"
.
-----SOLUTION-----
class Solution {public: string simplifyPath(string path) { stack<char> pathStack; pathStack.push(path[0]); for(int i =1; i<path.length(); i++) { if(path[i]=='/') { if(pathStack.top() == '/') continue; else if(pathStack.top()=='.') { pathStack.pop(); } else { pathStack.push(path[i]); } } else if(path[i]=='.') { if(pathStack.top() != '.') { pathStack.push(path[i]); continue; } pathStack.pop(); if(pathStack.size()==1) continue; pathStack.pop(); while(pathStack.top() != '/') pathStack.pop(); if(pathStack.size()>1){ pathStack.pop(); } } else { pathStack.push(path[i]); } } while(pathStack.size()>1 && (pathStack.top()=='/' || pathStack.top()=='.')) pathStack.pop(); if(pathStack.empty()) return "/"; int len = pathStack.size(); path = path.substr(0,len); while(!pathStack.empty()) { path[--len]=pathStack.top(); pathStack.pop(); } return path; }};
0 0
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- Simplify Path
- swift Array 数组(三)【转自http://blog.csdn.net/zhang_biao_1991/article/details/31344663】
- 在Struts 2通过Spring实现控制反转(IoC)
- 重构技巧四:谁动了我的!DOCTYPE!!!!!
- 配置iis支持.json格式的文件,如果是其他设备可以直接获取json里的数据
- 自适应的占位符效果
- Simplify Path
- HBase创建快照(snapshot)出现异常的处理方法
- SQL点滴14—编辑数据
- C++实现遍历链表一次求出中间的节点
- Storm实战之各组件方法理解
- WeiPHP 微信开发简介
- app 图标设置以及启动图片
- execvp:在程序中调子程序并获取返回值
- SQL点滴16—SQL分页语句总结