Simplify Path

Simplify Path

题目描述:

以字符串形式给定一个计算机中的路径,利用计算机中路径的知识将其简化。其中主要的规则有:
..表示进行上层目录
.表示当前目录

例子:

LeetCode71

解题思路:

主要的难点在于我们如何将字符串按照特定字符隔开。这边使用的是stringstream来将字符串分隔。其中需要对..和.这两种情况进行讨论。只有当保存路径的vector非空并且分隔的字符串不是..的情况我们才将分隔的字符串保存到vector。然后我们将vector中字符串用’/‘连接即可。最后需要注意的是我们如果得到的vector是空的情况下,直接返回’/‘即可。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
string simplifyPath(string path) {
string res;
string tmp;
vector<string> vec;
stringstream ss(path);
//字符串流
while(getline(ss, tmp, '/')){
//根据'/'来对字符串进行分割
if (tmp == "" || tmp == ".")continue;
if (tmp == ".." && !vec.empty()){
vec.pop_back();
//表示进入上一层
}
else if (tmp != "..") vec.push_back(tmp);
}
for (auto i : vec)
res += "/" + i;
//连接
return vec.empty() ? "/" : res;
}
};