LeetCode 71.简化路径
LeetCode 71.简化路径
题目描述:
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
思想:
可能有点复杂,我采用了两个双端队列,第一个负责对路径进行处理,去掉路径中的"/",将处理好的字符串存储在第一个队列中,每一个目录对应一个字符串,然后对一个字符串进行访问,当不是".." 或"."时,将这个路径弹出,放入第二个队列中,当是".." 且第二个队列不为空时,弹出第二个队列的队尾元素;当为其他情况时,进行下一次循环。最后第二个队列就为简化后的路径,将其分别弹出然后加上"/"就行。
代码:
class Solution {
public:
string simplifyPath(string path) {
deque<string> que1;
deque<string> que2;
for(int i = 0; i < path.size(); i++){
string temp;
while(path[i] == '/' && i < path.size()) { i++; }
while(path[i] != '/' && i < path.size()) {
temp += path[i];
i++;
}
if(!temp.empty()) {que1.push_back(temp);};
}
while(!que1.empty()){
string temp = que1.front();
que1.pop_front();
if(temp != "." && temp != "..") { que2.push_back(temp); }
else if(temp == "." ) { continue; }
else if(temp == ".." && !que2.empty()){
que2.pop_back();
}
else { continue; }
}
cout << "-------" << endl;
string res = "/";
while(!que2.empty()) {
res += que2.front();
que2.pop_front();
res += "/";
}
if(res.size() != 1) { res.erase(res.end() - 1); }
return res;
}
};
LeetCode 71.简化路径的更多相关文章
- Java实现 LeetCode 71 简化路径
71. 简化路径 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (-) 表示将 ...
- Leetcode 71 简化路径simplify-path(栈)
给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如,path = "/home/", => "/home"path = " ...
- LeetCode——71.简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录切换到上一级 ...
- LeetCode:简化路径【71】
LeetCode:简化路径[71] 题解参考天码营:https://www.tianmaying.com/tutorial/LC71 题目描述 给定一个文档 (Unix-style) 的完全路径,请进 ...
- leetcode刷题-71简化路径
题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录切换到 ...
- LeetCode OJ:Simplify Path(简化路径)
Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...
- lintcode 中等题:Simplify Path 简化路径
题目 简化路径 给定一个文档(Unix-style)的完全路径,请进行路径简化. 样例 "/home/", => "/home" "/a/./b ...
- leetcode 64. 最小路径和 动态规划系列
目录 1. leetcode 64. 最小路径和 1.1. 暴力 1.2. 二维动态规划 2. 完整代码及执行结果 2.1. 执行结果 1. leetcode 64. 最小路径和 给定一个包含非负整数 ...
- Leetcode 063 不同路径二
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...
随机推荐
- 批量群发,营销必备!Python代码实现自动发送邮件!
在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件方法 SMTP是发送邮件的协议, ...
- 第420期 Python 周刊
文章.教程或讲座 Python 数据科学教程:分析 Stack Overflow 2019 年开发者调查表** https://www.youtube.com/watch?v=_P7X8tMplsw ...
- SpringBoot:@Scope注解学习
概述 先通过注解的javadoc,可以了解到,@Scope在和@Component注解一起修饰在类上,作为类级别注解时,@Scope表示该类实例的范围,在和@Bean一起修饰在方法上,作为方法级别注解 ...
- Windows10安装ubuntu16.04双系统教程
写在前面:本教程为windows10安装ubuntu16.04(64位)双系统教程,是我多次安装双系统的经验总结,安装方法同样适用于ubuntu18.04(64位).为了直观和易于理解,我会尽量图文并 ...
- Winform中设置BackgroundWorker在取消时关闭后台进程
场景 在Winform中拖拽 一个BackgroundWorker控件,配合进度条控件能开启一个后台线程并报告进度条进度. 但是在执行后台线程的任务时,如果想要取消,怎样让其停止执行. 注: 博客主页 ...
- python assert断言用法
作用:断言函数运行状态 语法:assert condition,判断condition运行状态,若condition状态为false,则上报错误:AssertionError
- NIO基础方法一
1.remaining();返回当前位置与limit之间得元素数. int[] intArray={1,2,3,4}; IntBuffer intBuffer=IntBuffer.wrap(intAr ...
- Web 安全总结
同源策略 如果两个 URL 的协议.域名和端口都相同,我们就称这两个 URL 同源. 同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作. 同源策略限制了不同源的站 ...
- selinux disable
临时关闭: [root@localhost ~]# getenforceEnforcing [root@localhost ~]# setenforce 0[root@localhost ~]# ge ...
- ORACLE等待事件:read by other session
read by other session简介 官方关于read by other session的介绍如下: When information is requested from the datab ...