71. 简化路径(栈)
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了71. 简化路径(栈)相关的知识,希望对你有一定的参考价值。
71. 简化路径 (栈)
这个题意感觉不是很清晰,本质就是要把 . . . 和 . . .. .. 这两个东西简化掉。
可以先用 / / /分隔出数组。
然后模拟栈,遇到 . . .. ..就弹出栈顶,否则遇到 . . .或者空就不管,否则加入栈。
时间复杂度: O ( n ) O(n) O(n)
class Solution
public:
string simplifyPath(string path)
auto split = [](const string& s, char delim) -> vector<string>
vector<string> ans;
string cur;
for (char ch: s)
if (ch == delim)
ans.push_back(move(cur));
cur.clear();
else
cur += ch;
ans.push_back(move(cur));
return ans;
;
vector<string> names = split(path, '/');
vector<string> stack;
for (string& name: names)
if (name == "..")
if (!stack.empty())
stack.pop_back();
else if (!name.empty() && name != ".")
stack.push_back(move(name));
string ans;
if (stack.empty())
ans = "/";
else
for (string& name: stack)
ans += "/" + move(name);
return ans;
;
以上是关于71. 简化路径(栈)的主要内容,如果未能解决你的问题,请参考以下文章