Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
思路:说白了就是字符串的处理。".."的话就pop一个,字母的话就是push
class Solution {
public:
string simplifyPath(string path) {
vector<string> ans;
int i = 0;
while (i < path.size()) {
int end = i + 1;
while (end < path.size() && path[end] != '/') end++;
string sub = path.substr(i+1, end-i-1);
if (sub.length() > 0) {
if (sub == "..") {
if (!ans.empty())
ans.pop_back();
} else if (sub != ".")
ans.push_back(sub);
}
i = end;
}
if (ans.empty()) return "/";
string tmp = "";
for (int i = 0; i < ans.size(); i++)
tmp += "/" + ans[i];
return tmp;
}
};
本文提供了一个简化Unix风格绝对路径的方法,通过分析路径字符串并利用栈结构来移除多余的..和.部分,最终返回规范化的路径。
248

被折叠的 条评论
为什么被折叠?



