摘要:栈法复杂度时间空间思路思路很简单,先将整个路径按照分开来,然后用一个栈,遇到时弹出一个,遇到和空字符串则不变,遇到正常路径则压入栈中。注意如果结果为空,要返回一个弹出栈时要先检查栈是否为空代码
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) { Stackstk = 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年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题、不断运算上,计算方法、运算技巧、笔算能力以及数学公式的记忆仿佛成了我们学习数学的全部。这些记忆和技巧没几年就忘掉了,...
阅读 1961·2021-09-09 09:33
阅读 1107·2019-08-30 15:43
阅读 2644·2019-08-30 13:45
阅读 3296·2019-08-29 11:00
阅读 845·2019-08-26 14:01
阅读 3558·2019-08-26 13:24
阅读 471·2019-08-26 11:56
阅读 2682·2019-08-26 10:27