内容简介:【LeetCode】71. Simplify Path
问题描述
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"
Corner Cases:
- Did you consider the case where path = "/../"? In this case, you should return "/".
- Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/". In this case, you should ignore redundant slashes and return "/home/foo".
算法
使用 spli('/')
切割字符串,如 /a/./b/../../c/
切割为: ['a','.','b','..','.','c','']
,然后就好办了。使用一个栈来存储路径,然后遇到 ['.','']
就跳过去,遇到 '..'
就将栈的最近元素弹出。
代码
public String simplifyPath(String path) {
Stack<String> stack = new Stack<>();
for(String dir:path.split("/")) {
if("..".equals(dir)) {
if(!stack.isEmpty())
stack.pop();
} else if(".".equals(dir)) {
continue;
} else {
if(!"".equals(dir)) {
stack.push(dir);
}
}
}
String r = "";
for(String dir:stack) {
r = r + "/" + dir;
}
return "".equals(r)?"/":r;
}
转载请注明出处
:
http://www.zgljl2012.com/leetcode-71-simplify-path/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX编程艺术
Eric S. Raymond / 姜宏、何源、蔡晓俊 / 电子工业出版社 / 2006-2 / 59.00元
本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。一起来看看 《UNIX编程艺术》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
UNIX 时间戳转换
UNIX 时间戳转换