LeetCode | Simplify Path
2014-08-21 23:40
302 查看
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
题目解析:
根据情况,用栈来做。
例如:
输入1:
/../a/b/c/./..
输出1:
/a/b
模拟整个过程:
1. "/" 根目录
2. ".." 跳转上级目录,上级目录为空,所以依旧处于 "/"
3. "a" 进入子目录a,目前处于 "/a"
4. "b" 进入子目录b,目前处于 "/a/b"
5. "c" 进入子目录c,目前处于 "/a/b/c"
6. "." 当前目录,不操作,仍处于 "/a/b/c"
7. ".." 返回上级目录,最终为 "/a/b"
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".
题目解析:
根据情况,用栈来做。
例如:
输入1:
/../a/b/c/./..
输出1:
/a/b
模拟整个过程:
1. "/" 根目录
2. ".." 跳转上级目录,上级目录为空,所以依旧处于 "/"
3. "a" 进入子目录a,目前处于 "/a"
4. "b" 进入子目录b,目前处于 "/a/b"
5. "c" 进入子目录c,目前处于 "/a/b/c"
6. "." 当前目录,不操作,仍处于 "/a/b/c"
7. ".." 返回上级目录,最终为 "/a/b"
class Solution { public: string simplifyPath(string path) { // Start typing your C/C++ solution below // DO NOT write int main() function stack<string> s; string str; for(int i = 0; i < path.size(); i++) { if (path[i] == '/') { if (str == "..") { if (!s.empty()) s.pop(); } else if (str != "." && str != "") { s.push(str); } str = ""; //重新清空 } else { str += path[i]; //保存文件名,可能由多个字符组成 } } if (str == "..") //处理最后的情况, { if (!s.empty()) s.pop(); } else if (str != "." && str != "") s.push(str); if (s.empty()) return "/"; string ret; while(!s.empty()) { ret = "/" + s.top() + ret; s.pop(); } return ret; } };
相关文章推荐
- LeetCode 71. Simplify Path
- [leetcode] simplify path
- LeetCode - Refresh - Simplify Path
- 【leetcode】Simplify Path
- leetcode 100: Simplify Path
- 【LeetCode】Simplify Path 解题报告
- [leetcode]Simplify Path
- leetcode--Simplify Path
- 【LeetCode】Simplify Path 解题报告
- LeetCode(45) Simplify Path
- leetcode[71]Simplify Path
- Leetcode Simplify Path
- [leetcode]Simplify Path
- LeetCode 71: Simplify Path
- LeetCode_Simplify Path
- LeetCode(71) Simplify Path
- leetcode第一刷_Simplify Path
- 【Leetcode】【python】Simplify Path
- [leetcode] Simplify Path
- [Leetcode] Simplify Path