时间轴

2025-11-18

init


题目:


要区分第一个”/“和后面的”/“的区别,第一个为根目录,后面的则是分隔符,因此我们可以把一个目录看作”/“ + “目录名”。
如果目录为””即为空字符串,则为根目录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <string>
#include <stack>
#include <sstream>
using std::string;
using std::stringstream;
using std::stack;

class Solution {
public:
string simplifyPath(string path)
{
string res, curr;
stringstream ss(path);
stack<string> st;
while (std::getline(ss, curr, '/')) {
if (curr.empty()) {
continue;
}

if (curr.compare("..") == 0) {
if (!st.empty()) {
st.pop();
} else {
continue;
}

} else if (curr.compare(".") == 0) {
continue;
} else {
st.push(curr);
}
}
while (!st.empty()) {
curr = st.top();
st.pop();
res.insert(0, curr);
res.insert(0, "/");
}
if (res.empty()) {
res = "/";
}
return res;
}
};