lintcode-421-简化路径
421-简化路径
给定一个文档(Unix-style)的完全路径,请进行路径简化。
样例
"/home/", => "/home"
"/a/./b/../../c/", => "/c"挑战
你是否考虑了 路径 = "/../" 的情况?
在这种情况下,你需返回"/"。
此外,路径中也可能包含双斜杠'/',如 "/home//foo/"。
在这种情况下,可忽略多余的斜杠,返回 "/home/foo"。标签
字符串处理 栈
思路
- 首先分割 path,滤除 '/',且将分割后的路径保存在数组里,数组每个元素为一个目录名,包含 "." 和 ".."
- 然后遍历数组,将此时的元素入栈,若遇到 "." ,略过;遇到 "..",则出栈一个元素(注意栈空的情况)
- 最后根据栈生成简化后的路径
code
class Solution {
public:
/*
* @param path: the original path
* @return: the simplified path
*/
string simplifyPath(string path) {
// write your code here
int size = path.size();
if (size <= 0) {
return string("");
}
// 分割路径
path += '/';
vector<string> pathVector;
string p;
for (int i = 0; i <= size; i++) {
if (path[i] == '/') {
if (!p.empty()) {
pathVector.push_back(p);
p.clear();
}
}
else {
p += path[i];
}
}
// 简化路径
stack<string> parhStack;
for (int i = 0; i < pathVector.size(); i++) {
if (pathVector[i] != "." && pathVector[i] != "..") {
parhStack.push(pathVector[i]);
}
else if (pathVector[i] == ".." && !parhStack.empty()) {
parhStack.pop();
}
}
// 重写路径
string result;
if (parhStack.empty()) {
return string("/");
}
while (!parhStack.empty()) {
result.insert(0, "/" + parhStack.top());
parhStack.pop();
}
return result;
}
};
lintcode-421-简化路径的更多相关文章
- lintcode 中等题:Simplify Path 简化路径
题目 简化路径 给定一个文档(Unix-style)的完全路径,请进行路径简化. 样例 "/home/", => "/home" "/a/./b ...
- LeetCode:简化路径【71】
LeetCode:简化路径[71] 题解参考天码营:https://www.tianmaying.com/tutorial/LC71 题目描述 给定一个文档 (Unix-style) 的完全路径,请进 ...
- LeetCode OJ:Simplify Path(简化路径)
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- LeetCode 71.简化路径
LeetCode 71.简化路径 题目描述: 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径.在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此 ...
- Java实现 LeetCode 71 简化路径
71. 简化路径 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (-) 表示将 ...
- [LintCode] Simplify Path 简化路径
Given an absolute path for a file (Unix-style), simplify it. Have you met this question in a real in ...
- [LeetCode] Simplify Path 简化路径
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- [Swift]LeetCode71. 简化路径 | Simplify Path
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- 【leetcode-71】 简化路径
(1 pass) 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示 ...
- LeetCode(71):简化路径
Medium! 题目描述: 给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如,path = "/home/", => "/home&quo ...
随机推荐
- 宏观看restframework序列化
序列化 序列化意义 web有两种应用模式,一种是前后端不分离,一种是前后端分离,当前后端分离的时候,后端只需要向前端传输数据即可,不需要进行其他的操作,一般如果是中大型公司,都是前后端分离,这也是目前 ...
- .NET Core On Liunx环境搭建之MongoDB
伴随着.NET Core的开源,Liunx服务器才是.NET 的未来,公司前几天刚刚上新了一台Liunx服务器,我进行了一下环境的搭建,把经验分享出来. 服务器信息: 服务器用的是阿里云服务器,操作 ...
- C++ —— 类中static和const关键字声明变量的初始化方式总结
在类中声明变量/常量时,经常会用到static.const关键字.对于该变/常量的初始化问题,网上有许多相关文章,但是大多不够完善,或者存在错误.经过实际验证,总结如下: (注明:测试编译平台为VS2 ...
- Altera三速以太网IP核快速仿真与使用(上篇)
对于比较高级的ip核,altera一般都会提供仿真案例,网上有关于这个IP核的各种仿真方法,但都比较繁琐,前几日,朋友跟我分享了一个比较快速高效的仿真方法,这个方法也是他摸索折腾了一段时间才总结出来的 ...
- Hadoop命令大全
Hadoop命令大全 分类: 云计算2011-03-01 15:04 6852人阅读 评论(0) 收藏 举报 hadoop作业任务集群class脚本 1.列出所有Hadoop Shell支持的命令 ...
- 20155307 2016-2017 《Java程序设计》第三次实验报告
(一)敏捷开发与XP 敏捷开发是一种以人为核心.迭代.循序渐进的开发方法."敏捷流程"是一系列价值观和方法论的集合.从2001年开始,一些软件界的专家开始倡导"敏捷&qu ...
- 20155327 2016-2017-2 《Java程序设计》第一周学习总结
20155327 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 1.JAVA SE中JVM,JRE与JDK分别是什 ...
- thinkphp 去除空格
- 【Loj10222】佳佳的Fibonacci
题面 题解 可以发现\(T(n)\)无法用递推式表示. 于是我们做如下变形: \[ T(n) = \sum _ {i = 1} ^ n i \times f_i \\ S(n) = \sum _ {i ...
- 2762 helloparty·开车
2762 helloparty·开车 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description hellokitty的一个朋友要来他家,但是 ...