首页 > 代码库 > LeetCode[Stack]: Simplify Path
LeetCode[Stack]: Simplify Path
Given an absolute path for a file (Unix-style), simplify it.
For example,
path ="/home/"
, =>"/home"
path ="/a/./b/../../c/"
, =>"/c"
这个题目比较简单,用很常规的方法解决即可,测试的时候遇到什么问题再解决就行了。我的C++代码如下:
string simplifyPath(string path) {
string dir;
stack<string> dirs;
for (auto ch : path) {
if (ch != ‘/‘) dir += ch;
else if (!dir.empty()) {
dirs.push(dir);
dir.clear();
}
}
if (!dir.empty()) {
dirs.push(dir);
dir.clear();
}
int popCount = 0;
while (!dirs.empty()) {
auto topDir = dirs.top();
dirs.pop();
if (!topDir.compare(".")) continue;
else if (!topDir.compare("..")) ++popCount;
else if (popCount) --popCount;
else dir.insert(0, "/" + topDir);
}
return dir.empty() ? "/" : dir;
}
时间性能如下图所示:
LeetCode[Stack]: Simplify Path
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。