1. 题目来源
链接:71. 简化路径
2. 题目解析
这种模拟加字符串处理问题真的挺吓人的…一定要理清楚思路,一开始这只能面向测试用例编程了…
我觉得笔记写的蛮详细的,配合代码使用更佳!
- 时间复杂度: O ( n ) O(n) O(n)。
- 空间复杂度: O ( n ) O(n) O(n)
代码:
class Solution {
public:
string simplifyPath(string path) {
string res, name;
if (path.back() != '/') path += '/';
for (auto c : path) {
if (c != '/') name += c;
else {
if (name == "..") {
while (res.size() && res.back() != '/') res.pop_back();
if (res.size()) res.pop_back();
} else if (name != "." && name != "") {
res += '/' + name;
}
name.clear();
}
}
if (res.empty()) res = "/";
return res;
}
};