[leetcode] Simplify Path
2016-07-18 10:34
211 查看
题目:
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
代码:
class Solution {
public:
/***
* 注意几个细节:
* 1)重复连续出现的'/',只按1个处理,即跳过重复连续出现的'/';
* 2)如果路径名是".",则不处理;
* 3)如果路径名是"..",则需要弹栈,如果栈为空,则不做处理;
* 4)如果路径名为其他字符串,入栈。
*
*
* */
string simplifyPath(string path) {
int size = path.size();
stack<string> ss;
for(int i = 0; i < size;){
//跳过'/'
while('/' == path[i] && i < size)
++ i;
//记录路径名称
string s = "";
while('/' != path[i] && i < size)
s += path[i ++];
//对当前路径进行处理
if(s == ".." && !ss.empty())
ss.pop();
else if(s != "" && s!= "." && s != "..")
ss.push(s);
}
string res = "";
if(ss.empty())
return "/";
else{
//注意输出顺序
while(!ss.empty()){
res = "/" + ss.top() + res;
ss.pop();
}
}
return res;
}
};
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".
代码:
class Solution {
public:
/***
* 注意几个细节:
* 1)重复连续出现的'/',只按1个处理,即跳过重复连续出现的'/';
* 2)如果路径名是".",则不处理;
* 3)如果路径名是"..",则需要弹栈,如果栈为空,则不做处理;
* 4)如果路径名为其他字符串,入栈。
*
*
* */
string simplifyPath(string path) {
int size = path.size();
stack<string> ss;
for(int i = 0; i < size;){
//跳过'/'
while('/' == path[i] && i < size)
++ i;
//记录路径名称
string s = "";
while('/' != path[i] && i < size)
s += path[i ++];
//对当前路径进行处理
if(s == ".." && !ss.empty())
ss.pop();
else if(s != "" && s!= "." && s != "..")
ss.push(s);
}
string res = "";
if(ss.empty())
return "/";
else{
//注意输出顺序
while(!ss.empty()){
res = "/" + ss.top() + res;
ss.pop();
}
}
return res;
}
};
相关文章推荐
- windows下log的重定向输出
- AsyncTask异步任务的使用
- 学习笔记——用两个队列实现一个栈
- php: zend server 安装及相关配置
- 在Ubuntu14.04上安装Hadoop
- CodeForces 609B The Best Gift
- 指针的引用与指针的区别。
- IBM BigInsights新增独门绝技:全面支持Hadoop On Power!
- 当我们谈论美食的时候我们会谈论什么
- 二叉树中完全二叉树、满二叉树、二叉排序树、平衡二叉树的区别和联系
- 为ubuntu添加多媒体以及flash等等常用包
- python脚本实现自动登陆校园网
- @autowired和@Resource
- VC如何让窗口半透明
- DFS生成n个数的排列数
- System.InvalidOperationException
- 魔都 3 年,从程序员到 CTO
- CSS 多类选择器
- 阿里云服务器mysql数据库修改密码
- 利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码