LeetCode 71. LeetCode究极班 · 71. 简化路径(挺难的模拟题--多写几遍)
原题链接
中等
作者:
初静
,
2021-04-18 11:08:35
,
所有人可见
,
阅读 299
yxc题解
- 使用字符串
res
来存结果, name
存目录名
- 给
path
最后面补/
- 按照
/
来判断是否是一个完整的目录名
- 如果是完整的目录名,则看是否是
".."
,如果是则返回上一层目录
否则,说明不是..
看是否不是""
, 和 "."
,如果不是的话,将目录名加到最终路径中
如果是则什么也不做,
- 最后判断路径名是否是空,如果是空,则返回
"/"
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 == "..") { // path = /home/yxc/../ res = /home/yxc
while (res.size() && res.back() != '/') res.pop_back(); // /home/yxc --> /home/
if (res.size()) res.pop_back(); // /home
}
else if (name != "." && name != "") res += '/' + name;
name.clear();
}
}
if (res.empty()) res = "/";
return res;
}
};