[leetcode]71. Simplify Path
来源:互联网 发布:轩辕剑神掌进阶数据 编辑:程序博客网 时间:2024/06/06 00:29
题目链接:https://leetcode.com/problems/simplify-path/#/description
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
思路:
这道题的要求是简化一个Unix风格下的文件的绝对路径。
字符串处理,由于".."是返回上级目录(如果是根目录则不处理),因此可以考虑用栈记录路径名,以便于处理。需要注意几个细节:
- 重复连续出现的'/',只按1个处理,即跳过重复连续出现的'/';
- 如果路径名是".",则不处理;
- 如果路径名是"..",则需要弹栈,如果栈为空,则不做处理;
- 如果路径名为其他字符串,入栈。
最后,再逐个取出栈中元素(即已保存的路径名),用'/'分隔并连接起来,不过要注意顺序呦。
时间复杂度:O(n)
空间复杂度:O(n)
class Solution{public: string simplifyPath(string path) { stack<string> sta; for(int i=0;i<path.length();) { while(i<path.length() && path[i]=='/') i++; string s=""; while(i<path.length() && path[i]!='/') s+=path[i++]; if(s==".." && !sta.empty()) sta.pop(); else if(s!="" && s!="." && s!="..") sta.push(s); } if(sta.empty()) return "/"; string s=""; while(!sta.empty()) { s="/"+sta.top()+s; sta.pop(); } return s; }};
0 0
- LeetCode 71. Simplify Path
- LeetCode --- 71. Simplify Path
- [Leetcode] 71. Simplify Path
- [leetcode] 71.Simplify Path
- [leetcode] 71.Simplify Path
- Leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- Leetcode 71. Simplify Path
- 71. Simplify Path LeetCode
- leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- LeetCode 71. Simplify Path
- Leetcode 71. Simplify Path
- [leetcode] 71. Simplify Path
- LeetCode 71. Simplify Path
- LeetCode - 71. Simplify Path
- [LeetCode] 71. Simplify Path
- leetcode 71. Simplify Path
- 知乎问题:北京,2017,多少k的java web程序员应该懂多线程和jvm优化?
- 最大子段和
- Android AOP 实践笔记
- 基于MVC模式模拟实现登录注册开发过程(二)
- RecentsActivity简介
- [leetcode]71. Simplify Path
- centos安装redis及集群
- python+opencv打开摄像头,保存视频、拍照功能的实现
- 点击两次返回键退出
- Python脚本打包成exe
- rsync服务与搭建详解
- EOJ 3256 拼音魔法 【模拟】
- windows上的TFTP服务器的安装
- JAVASCRIPT设计模式详解之命令模式