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;
}
};