文件路径简化-堆栈
2017-09-24 15:38
120 查看
Simplify Path No.71
Given an absolute path for a file (Unix-style), simplify it.For example,path ="/home/", =>
"/home"path =
"/a/./b/../../c/", =>
"/c"如果仅仅从不断replace输入路径的角度出发,会非常复杂。如果用一个栈来一次存储各级路径的directory名字,然后重组,会简便一些,这也是文件路径简化类题目的常用思路。为了末尾可以顺序遍历栈重组path,我们不用传统的stack lib,而用vector来实现栈,这样可以方便顺序遍历。class Solution {public:string simplifyPath(string path) {if(path.length() == 0) return "";vector<string> v;int p = 0, start = 0;while(p < path.length()){if(path[p] == '/') ++p;else{start = p;while(p < path.length() && path[p] != '/') ++p;string temp = path.substr(start, p-start);if(temp == ".."){if(!v.empty()) v.pop_back(); //遇到".."就出栈else{if(path[0] != '/') v.push_back(temp); //如果没东西可以出,就要看path是否以根目录开头了,不是以根目录开头的话,".."要进栈的}}else if(temp == "."){} //遇到"."就跳过else if(temp.length() > 0){v.push_back(temp);}}}string res = (path[0] == '/' ? "/" : ""); //重组pathfor(vector<string>::iterator i = v.begin(); i < v.end(); ++i){res.append(*i);if(i < v.end()-1) res.append("/");}return res;}};
相关文章推荐
- iOS日志记录当前文件的堆栈、类名、函数名、行号及文件路径等信息
- 配置虚拟域名简化URL--文件路径
- 使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置
- jsp 简化获取相对路径,Uploader文件上传
- 简化文件的绝对路径 Simpify Path
- LeetCode-----71. Simplify Path(简化文件路径)
- [LeetCode] Simplify Path,文件路径简化,用栈来做
- Simplify Path 简化文件路径@LeetCode
- windows 7中修改用户配置文件的路径
- C/C++从文件路径中取文件名
- clion 如何设置main的入参,ubuntu的系统头文件路径
- 解决ueditor上传文件到tomcat虚拟路径等问题
- Java中的 File类对文件 路径分割符不敏感! <发现>
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集
- 利用C#还原数据库(SQL SERVER)备份文件到指定路径
- 文件路径正确,报java.io.FileNotFoundException异常的原因及解决办法
- java 使用相对路径读取文件
- GDAL中文路径不能打开&Shp文件字段属性值中文乱码
- Unity 判断某个 路径 或 文件 是否存在
- js动态获取文件路径