首页 > 学院 > 开发设计 > 正文

[LeetCode] 71. Simplify Path

2019-11-08 00:43:32
字体:
来源:转载
供稿:网友

[LeetCode] 71. Simplify Path


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”.

分析文件路径,其实通过’/’就是分割字符串,’/’之间的字符串分三种情况:

s == “..”, 保存文件路径的栈的栈顶出栈。s == “.”, 什么都不做。s == 其他, 压栈。
class Solution {public: string simplifyPath(string path) { vector<string> p; int len = path.length(); string s = ""; for (int i=0; i<len; ++i) { if (path[i] == '/') { if (s == "..") { if (!p.empty()) { p.pop_back(); } } else if (s != "." && s != "") { p.push_back(s); } s = ""; } else { s += path[i]; } } if (s == "..") { if (!p.empty()) { p.pop_back(); } } else if (s != "." && s != "") { p.push_back(s); } string res = ""; int psize = p.size(); for (int i=0; i<psize; ++i) { res += "/" + p[i]; } return res == "" ? "/" : res; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表