Leetcode | Simplify Path
2014-10-23 16:11
232 查看
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".
这里用了一个vector来模拟栈。方便正序输出。
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".
这里用了一个vector来模拟栈。方便正序输出。
class Solution { public: string simplifyPath(string path) { if (path.empty()) return "/"; path.push_back('/'); int start = -1, end; vector<string> st; while ((end = path.find('/', start + 1)) != string::npos) { string tmp = ""; if (end - start - 1) { tmp = path.substr(start + 1, end - start - 1); } if (tmp == ".." && !st.empty()) st.pop_back(); if (!tmp.empty() && tmp != "." && tmp != "..") st.push_back(tmp); start = end; } stringstream ans; for (int i = 0; i < st.size(); i++) { ans << '/' << st[i]; } if (!ans.str().empty()) return ans.str(); return "/"; } };
相关文章推荐
- [leetcode] simplify path
- LeetCode - Refresh - Simplify Path
- 【leetcode】Simplify Path
- [LeetCode] Simplify Path
- leetcode: 71. Simplify Path
- leetcode 100: Simplify Path
- [leetcode]Simplify Path
- 【Leetcode】【Medium】Simplify Path
- 【LeetCode】Simplify Path 解题报告
- Leetcode-71. Simplify Path
- leetcode[71]Simplify Path
- Leetcode Simplify Path
- LeetCode_Simplify Path
- leetcode第一刷_Simplify Path
- LeetCode之Simplify Path
- Leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- [LeetCode]Simplify Path
- 【Leetcode】 Simplify Path
- [Leetcode] Simplify Path