基本思路:用vector<string> dirs存储新路径中的文件夹名称,遍历整个旧路径——
- 遇到
/或.,忽略 - 遇到
..,将dirs中最后一个元素推出 - 遇到其他字符串,推入
dirs
遍历完毕后,用/连接dirs即为答案。
代码如下:
//
// Created by jt on 2020/9/25.
//
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
/**
*
* @param path string字符串
* @return string字符串
*/
string simplifyPath(string path) {
// write code here
vector<string> dirs;
for (int i = 0; i < path.size(); ++i) {
if (path[i] != '/') {
int j = i;
while (j < path.size() && path[j] != '/') ++j;
string tmp = path.substr(i, j-i);
i = j;
if (tmp == ".." && !dirs.empty()) dirs.pop_back();
if (tmp != "." && tmp != "..") dirs.push_back(tmp);
}
}
string res;
for (auto str: dirs) res += "/" + str;
if (res.size() < 1) return "/";
else return res;
}
};
京公网安备 11010502036488号