摘要:栈法复杂度时间空间思路思路很简单,先将整个路径按照分开来,然后用一个栈,遇到时弹出一个,遇到和空字符串则不变,遇到正常路径则压入栈中。注意如果结果为空,要返回一个弹出栈时要先检查栈是否为空代码
Simplify Path
</>复制代码
Given an absolute path for a file (Unix-style), simplify it.
For example,
</>复制代码
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
栈法
复杂度
时间 O(N) 空间 O(N)
思路思路很简单,先将整个路径按照/分开来,然后用一个栈,遇到..时弹出一个,遇到.和空字符串则不变,遇到正常路径则压入栈中。
注意如果结果为空,要返回一个/
弹出栈时要先检查栈是否为空
代码</>复制代码
public class Solution {
public String simplifyPath(String path) {
Stack stk = new Stack();
String[] parts = path.split("/");
for(String part : parts){
switch(part){
case ".":
case "" :
break;
case "..":
if(!stk.isEmpty()){
stk.pop();
}
break;
default:
stk.push(part);
}
}
StringBuilder sb = new StringBuilder();
if(stk.isEmpty()){
return "/";
}
while(!stk.isEmpty()){
sb.insert(0, "/"+stk.pop());
}
return sb.toString();
}
}
2018/2
</>复制代码
class Solution:
def simplifyPath(self, path):
"""
:type path: str
:rtype: str
"""
parts = path.split("/")
simplified = []
for part in parts:
if part == "." or part == "":
continue
elif part == "..":
simplified and simplified.pop()
else:
simplified.append(part)
return "/" + "/".join(simplified)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64631.html
摘要:标题文字简化风格的绝对路径。我们可以首先将所有的内容从中分离出来,然后分别处理。这里我们需要用到堆栈的数据结构。堆栈有很多种实现方式,中的类类都可以实现其功能。我们将读到的路径入栈,根据操作符出栈,最后将栈中剩余的元素组织成路径返回即可。 标题文字 Given an absolute path for a file (Unix-style), simplify it. For exa...
Problem Given an absolute path for a file (Unix-style), simplify it. For example, path = /home/, => /home path = /a/./b/../../c/, => /c path = /a/../../b/../c//.//, => /c //here: b is cancelle...
摘要:题目解答的规则如下三种需要跳过的情况当遇到时,需要向前进出来的顺序是反的,所以加的时候,把最新出来的路径加在前面 题目:Given an absolute path for a file (Unix-style), simplify it. For example,path = /home/, => /homepath = /a/./b/../../c/, => /cclick to ...
摘要:,可以用函数去掉所有,然后多考虑一个中间为空的。关于语句的一个特点我们对和其实都是不做操作,然而,两个可以都,但是不能都不做操作。像这样这样这两个就都会等价于下一个就会出错。 Problem Given an absolute path for a file (Unix-style), simplify it. Example /home/, => /home //去掉末尾的slash...
摘要:的符号运算如果之前是学数学相关专业了解计算机代数系统,就会对数学符号的运算比较熟悉,而如果之前是程序员,可能会有点不太明白,下面我们就来了解一下。 在我们初、高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题、不断运算上,计算方法、运算技巧、笔算能力以及数学公式的记忆仿佛成了我们学习数学的全部。这些记忆和技巧没几年就忘掉了,...
阅读 2273·2021-09-09 09:33
阅读 1186·2019-08-30 15:43
阅读 2759·2019-08-30 13:45
阅读 3378·2019-08-29 11:00
阅读 1017·2019-08-26 14:01
阅读 3649·2019-08-26 13:24
阅读 592·2019-08-26 11:56
阅读 2782·2019-08-26 10:27